2016-09-14 28 views
1

私はs3のURLからファイルをダウンロードするためのpowershellスクリプトを書いています。私は(403)禁じられたエラーを得続ける。私が使用するコマンドはs3からurlをダウンロード

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

EC2インスタンスがS3バケットからダウンロードするためのアクセス権を持って、それに関連したIAM役割を持っています。私はaws cliでコマンド(cp、lsなど)を正常に実行することができます。これはリクエストに合格する資格情報で問題になりますか?このリクエストでAWS認証情報を渡す必要がありますか?

+1

私はS3が 'http'ではなく' https'を使うと信じています。 – wOxxOm

+0

私はこの感謝を正しました! – PrestonM

答えて

2

Invoke-WebRequestコマンドレットをそのまま使用すると、S3に資格情報が渡されません。したがって、ファイルをダウンロードする権限を与えられたEC2インスタンスにいる場合でも、Amazon S3はそれを認識しません。

AWS CLIを使用する場合、AWS CLIは要求と共に資格情報を送信します。

あなたは、いくつかのオプションがあります。

  1. はS3にファイルを公開してください。これにより、コマンドレットをそのまま動作させることができます。しかし誰でもがそれをダウンロードすることができます。
  2. 代わりにAWS SDKを使用してファイルをダウンロードしてください。あなたが言及したように、それは正常に動作しています。
  3. AWS SDKを使用して事前署名されたURLを生成すると、事前に署名されたURLにInvoke-WebRequestを使用してファイルをダウンロードできます。
  4. Invoke-WebRequestコールで認証情報を送信してください。私はこれをお勧めしません。
関連する問題