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

Bec*_*cks 26 https amazon wget amazon-s3 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.
Run Code Online (Sandbox Code Playgroud)

我已通过Amazon AWS Web控制台手动将此存储桶公开.

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

Ama*_*mar 25

您应该能够从创建的URL访问它,如下所示:

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

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

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

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

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


小智 23

您可以使用以下命令:

wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/my-file.jpg'
Run Code Online (Sandbox Code Playgroud)

  • “HTTP 请求已发送,正在等待响应...403 禁止” (2认同)

Bec*_*cks 8

得到它...如果您使用带有--acl公共标志的S3CMD在S3存储桶中上传文件,则可以轻松地从S3下载S3中的文件...

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

或者你可以尝试:

s3cmd setacl --acl-public --guess-mime-type s3://test_bucket/test_file
Run Code Online (Sandbox Code Playgroud)

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


小智 8

AWS cli有一个'presign'命令,可以用来获取私有s3资源的临时公共URL.

aws s3 presign s3://private_resource
Run Code Online (Sandbox Code Playgroud)

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

  • 403错误:禁止。 (2认同)

Ant*_*nko 8

我也遇到过几次同样的情况。使用 CLI 从 AWS 下载任何文件的最快、最简单的方法是下一个命令:

\n\n
aws s3 cp s3://bucket/dump.zip dump.zip\n
Run Code Online (Sandbox Code Playgroud)\n\n

文件下载速度比通过 wget 快得多,至少如果您在美国境外的话。

\n