2016-09-14 87 views
1

我正在写一个powershell脚本从s3 url下载文件。我不断收到(403)禁止的错误。我使用的命令是通过网址从s3下载

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

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

+1

我相信S3使用'https',而不是'http'。 – wOxxOm

+0

我确实改正了这个谢谢! – PrestonM

回答

2

如果按照这种方式使用Invoke-WebRequest cmdlet,则不会将证书传递给S3。因此,即使您位于授权下载文件的EC2实例上,Amazon S3也不知道它。

使用AWS CLI时,它将随请求一起发送证书。

您有几种选择:

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