通过网址从s3下载

时间:2016-09-14 20:34:18

标签: powershell amazon-web-services amazon-s3

我正在编写一个powershell脚本来从s3网址下载文件。我一直收到(403)Forbidden错误。我使用的命令是

Invoke-WebRequest -Uri "http://bucketname.s3.amazonaws.com/file.txt" 

EC2实例具有与之关联的IAM角色,可以从s3存储桶下载。我能够成功运行aws cli命令(cp,ls等)。这是我通过请求传递的凭据的问题吗?我是否需要通过此请求传递AWS凭据?

1 个答案:

答案 0 :(得分:2)

当您使用Invoke-WebRequest cmdlet时,您不会将凭据传递给S3。因此,即使您已获得授权下载该文件的EC2实例,Amazon S3也不会知道该文件。

使用AWS CLI时,它会将凭据与请求一起发送。

您有几个选择:

  1. 在S3中将文件设为公共。这将允许您的cmdlet按原样工作。但是任何人都可以下载它。
  2. 使用AWS开发工具包下载文件。如你所说,它工作正常。
  3. 使用AWS开发工具包生成预先签名的网址,然后您可以将Invoke-WebRequest与预先签名的网址一起使用,以下载该文件。
  4. 通过Invoke-WebRequest电话发送凭据。我不推荐这个,因为你只是重新发明轮子。