2016-09-14 63 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電話。我不會推薦這個,因爲你只是在重新發明輪子。