我已经安装了aws客户端,并配置了访问密钥,秘密密钥和区域。 当我从命令行运行aws s3 cp命令时,它正在工作并返回图像。
ws s3 cp s3://BUCKET_NAME/FOLDERNAME/abc.jpg /var/images/
但是当我在shell脚本下使用上述相同命令时,它并没有将映像复制到名称。
这是一个shell脚本
#!/bin/bash
set -e
searchstring="/cases/"
foldername="/"
while read line
do
data=$line
name=${data#*$searchstring}
replaced=$(echo $name | sed -e 's/\//_/g')
folder=${name%$foldername*}
path=/root/scripts/odometer/
aws s3 cp s3://*****-production-/cases/$name $path --recursive --region us-east-1
done < export.txt
我还尝试了其他所有选项,即删除了递归和区域,并保留了一个,但没有成功。
我还尝试使用wget
命令来提供s3图片的完整路径,但仍然无法下载。
root@oltau-training:~/scripts# wget https://****production-***.s3.us-east-2.amazonaws.com/cases/132/1525770896114.jpg -P /root/scripts/odometer/
--2019-09-28 05:43:40-- https://****production-***.s3.us-east-2.amazonaws.com/cases/132/1525770896114.jpg
Resolving ****production-***.s3.us-east-2.amazonaws.com (****production-***.s3.us-east-2.amazonaws.com... 5*.219.*8.48
Connecting to ****production-***.s3.us-east-2.amazonaws.com (****production-***.s3.us-east-2.amazonaws.com)|5*.219.*8.48|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2019-09-28 05:43:40 ERROR 403: Forbidden.
我打算使用aws s3命令或wget命令将图像从s3复制到本地计算机。 注意-我拥有我的s3帐户的完全访问权限
答案 0 :(得分:1)
如果对象是私有的,则无法获取图像;对于公共图像,可以尝试使用wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/my-file.jpg'
之类的东西。
如果此aws s3 cp s3://BUCKET_NAME/FOLDERNAME/abc.jpg /var/images/
有效,则意味着bash脚本变量扩展存在问题。
因此最好在尝试从s3获取对象之前先回显命令,并验证是否已正确设置所有变量。
echo "aws s3 cp s3://*****-production-/cases/$name $path --recursive --region us-east-1"
可能导致此问题的另一件事是,仔细检查区域--region us-east-1
。与第一个命令一样,它将选择默认区域。
如果您要复制单个文件,请删除--recursive
答案 1 :(得分:0)
从bash脚本复制到s3存储桶或从中复制时,我遇到了类似的问题。我所做的只是检查aws cli的安装路径,并将该路径添加到脚本中。您可以使用bash命令哪个aws
检查aws cli路径您在shell脚本中的命令将是: / path / aws s3 cp ....