无法将文件从s3复制到ubuntu本地计算机

时间:2019-09-28 06:01:44

标签: amazon-web-services shell amazon-s3 wget

我已经安装了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帐户的完全访问权限

2 个答案:

答案 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 ....