2017-06-22 13 views
0

Amazon S3の予約済みURLに問題があります。私のバケツポリシーの設定では、特定のIAMユーザだけにアクセス権を与えています。つまり、公開されていません。だから、ブラウザでS3バケットのファイルURLに移動すると、アクセス拒否メッセージが表示されます。 したがって、aws-cliツールを使用して、そのファイルの事前設定されたURLを生成します。このURLを使用すると、ファイルを正しく取得できますが、バケットにファイルを置くときに問題が発生します。PUT用に事前設定済みのURLは機能しませんが、GET S3用に動作します

<Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

私は欠けているもの:私は、このメッセージのエラーを取得していますbeacuseファイルを置くことができないというURLを使用していますか?

+1

は私がpresigned URLにエンコードされたHTTP動詞(例えば、 'GET'や' POST'を)信じているので、あなたは、あなたが 'POST'リクエストでGET''のために作られたpresigned URLを使用する場合、あなたはこれを取得しますエラーのsot。私は両方のために使用することができる単一のpresigned URLを作ることが可能かどうか確かではありません。 – smarx

答えて

1

PUTメソッドとGETメソッドには別の事前設定済みのURLが必要です。これは、HTTP動詞(PUT,GETなど)が、署名を構成するために使用された「CanonicalResource」の一部であるためです。詳細は、"Authenticating Requests" in the Amazon S3 reference docsを参照してください。

+0

s/POST/PUT/gを考慮してください。 'POST'アップロードには署名付きポリシー文書が必要ですが、' PUT'アップロードでは署名付きURLを使用できます。 –

+0

が編集されました。 (元の質問は、とにかく 'PUT'に関するものでした。) – smarx

関連する問題