Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Https 如何使用wget从S3存储桶下载文件?_Https_Amazon S3_Amazon_Wget_S3cmd - Fatal编程技术网

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

Https 如何使用wget从S3存储桶下载文件?,https,amazon-s3,amazon,wget,s3cmd,Https,Amazon S3,Amazon,Wget,S3cmd,通过S3cmd工具和S3cmd put contentfile S3://test\u bucket/test\u file,我可以用我的凭证将一些内容推送到S3 bucket 问题是,我需要在其他没有安装s3cmd但安装了wget的计算机上下载这个bucket的内容 当我尝试使用wget从我的bucket下载一些内容时,我得到了以下结果: https://s3.amazonaws.com/test_bucket/test_file --2013-08-14 18:17:40-- `http

通过S3cmd工具和S3cmd put contentfile S3://test\u bucket/test\u file,我可以用我的凭证将一些内容推送到S3 bucket

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

当我尝试使用wget从我的bucket下载一些内容时,我得到了以下结果:

 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.
我已经通过AmazonAWSWeb控制台手动公开了这个bucket


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

您应该能够通过如下创建的url访问该文件:

http://{bucket name}.s3.amazonaws.com/

现在,假设您的s3文件路径为:

s3://testbucket/testfolder/testfile.txt

您应该能够使用以下url创建此文件:


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

明白了。。。如果您在S3 bucket中上传一个带有--acl public标志的S3CMD文件,那么您应该能够使用wget轻松地从S3下载该文件

结论:为了使用wget进行下载,首先需要使用
s3cmd put--acl public--guess mime type S3://test\u bucket/test\u file
上传S3中的内容

或者,您可以尝试:

s3cmd setacl --acl-public --guess-mime-type s3://test_bucket/test_file
请注意上面的setacl标志。这将使s3中的文件可以公开访问 然后可以执行
wgethttp://s3.amazonaws.com/test_bucket/test_file

  • 转到S3控制台

  • 选择您的对象

  • 单击“对象操作”

  • 选择“下载为”

  • 使用鼠标右键单击“复制链接地址”

  • 然后使用命令:

    wget--无支票证书--无代理'http://your_bucket.s3.amazonaws.com/your-copied-link-address.jpg“


  • AWS cli有一个“presign”命令,可用于获取私有s3资源的临时公共URL

    aws s3 presign s3://private_resource
    

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

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

    • 到达bucket并单击下载为按钮。复制生成的链接
    • 执行下面的命令

      wget--无检查证书--无代理--用户=用户名--询问密码-O“下载url”


    谢谢

    我遇到了同样的错误,我通过添加安全组入站规则解决了这个问题:

    在端口443处键入HTTPS到我的实例所在子网的IP地址(因为我是唯一访问它的人)


    希望它能帮助那些忘记包括这个的人,我有好几次遇到过同样的情况。这是使用CLI is next命令从AWS下载任何文件的最快、最简单的方法:

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

    文件下载速度比通过wget快,至少在您不在我们公司的情况下是如此。

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

    如果不想输入任何帐户/密码,只需使用wget命令而不输入任何密码,请确保权限如以下设置所示

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


    或者选择objest并转到“操作”->“公开”,将在权限设置下执行相同的操作。

    如果已公开该bucket,则还需要公开该对象。
    另外,wget命令不适用于S3://地址,您需要在AWS web控制台中查找对象的URL。

    注意,您使用的是HTTP协议,amazon管理控制台为我提供了一个HTTPS URL。。。HTTPS是如何改变事情的?工作得很好!无需安装s3cmd或其他CLI:)“HTTP请求已发送,等待响应…403禁止”错误403:禁止。它工作得非常好!!!它为我提供了一个http路径,我可以在wget中使用它来恢复文件的下载。非常感谢。上次尝试使用时,我也犯了禁止的错误。并且找到了一种更好的方法,使用
    awss3cp
    命令来实现这一点,就像我在我的回答(见上文或下文)中所描述的那样。对于其他人,我必须用引号将我的s3url括起来,这样它才能工作。否则,我得到403禁止。e、 g.
    wget”https://s3.amazonaws.com/test_bucket/test_file“
    。我们的URL即将过期,其中有一些需要验证的技巧。我建议不要在回答中使用花言巧语。他们有可能被误解为根本没有答案。你想回答本页顶部的问题,是吗?否则请删除此帖子。请将此作为解释性的有条件回答,以避免给人以提出澄清问题而不是回答的印象(对此,应使用评论而不是回答,比较)。例如,“如果你的问题是……那么解决办法就是……因为……”