如何使用wget从S3存储桶下载文件?

时间:2013-08-14 18:33:20

标签: https amazon-s3 amazon wget s3cmd

我可以使用我的凭据通过S3cmd工具将一些内容推送到S3存储桶,并使用s3cmd put contentfile S3:// test_bucket / test_file

问题是,我需要在没有安装s3cmd的其他计算机上从这个桶下载内容,但是他们已经安装了wget。

当我尝试使用wget从我的存储桶中下载一些内容时,我得到了这个:

 https://s3.amazonaws.com/test_bucket/test_file
--2013-08-14 18:17:40--  `https`://s3.amazonaws.com/test_bucket/test_file
Resolving s3.amazonaws.com (s3.amazonaws.com)... [ip_here]
Connecting to s3.amazonaws.com (s3.amazonaws.com)|ip_here|:port... connected.
HTTP request sent, awaiting response... 403 Forbidden
`2013`-08-14 18:17:40 ERROR 403: Forbidden.

我已通过亚马逊AWS Web控制台手动将此存储桶公开。

问题是:如何使用wget从S3存储桶下载内容?进入txt本地文件?

9 个答案:

答案 0 :(得分:23)

您应该能够从如下创建的网址访问它:

http://{bucket-name}.s3.amazonaws.com/<path-to-file>

现在,说你的s3文件路径是:

s3://test-bucket/test-folder/test-file.txt

您应该可以使用以下网址来获取此文件:

http://test-bucket.s3.amazonaws.com/test-folder/test-file.txt

答案 1 :(得分:23)

您可以使用命令:

wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/my-file.jpg'

答案 2 :(得分:8)

知道了...如果你在带有S3CMD的S3存储桶中使用--acl公共标志上传文件,那么就可以轻松地从S3下载S3中的文件...

结论:要使用wget下载,首先需要使用s3cmd put --acl public --guess-mime-type <test_file> s3://test_bucket/test_file上传S3中的内容

或者你可以尝试:

s3cmd setacl --acl-public --guess-mime-type s3://test_bucket/test_file

注意上面的setacl标志。这将使s3中的文件可以公开访问 然后你可以执行wget http://s3.amazonaws.com/test_bucket/test_file

答案 3 :(得分:7)

AWS cli有一个&#39; presign&#39;可以用来获取私有s3资源的临时公共URL的命令。

aws s3 presign s3://private_resource

然后,您可以使用wget使用预签名URL下载资源。

答案 4 :(得分:1)

我有几次相同的情况。下一条命令是使用CLI从AWS下载任何文件的最快,最简单的方法:

aws s3 cp s3://bucket/dump.zip dump.zip

至少在美国以外的地区,文件下载比通过wget更快。

答案 5 :(得分:1)

请确保已正确授予读取权限。

如果你不想输入任何账号/密码,只需要通过wget命令而不需要任何密码,确保权限如以下设置所示。

通过 Amazon S3 -> 存储桶 -> 权限 - 编辑 检查“所有人(公共访问)”对象并保存更改。permission setting like this - screenshot

或选择对象并转到“操作”->“公开”,在权限设置下也会做同样的事情。

答案 6 :(得分:0)

如果您无权在您的Linux机器上安装aws客户端,请尝试以下方法。

  • 进入存储桶,然后单击“下载为”按钮。复制生成的链接。
  • 在下面执行命令

    wget --no-check-certificate --no-proxy --user = username --ask-password -O“下载网址”

谢谢

答案 7 :(得分:0)

我遇到了相同的错误,并通过添加“安全组入站”规则解决了该问题:

在我的实例所在的子网的IP地址(因为我是唯一访问它的人)的端口443上的HTTPS类型。

希望它可以帮助忘记了此内容的人

答案 8 :(得分:0)

您已将存储桶设为公开,您还需要将对象设为公开。 此外,wget 命令不适用于 S3:// 地址,您需要在 AWS Web 控制台中找到对象的 URL。