2017-06-22 164 views
0

我在Amazon S3預先登記的URL中遇到問題。在我的桶策略配置中,我只允許訪問特定的IAM用戶,我的意思是不公開。所以,如果我在瀏覽器中導航到S3存儲桶的文件URL,我會收到拒絕訪問的消息。 因此,我使用aws-cli工具來生成該文件的預先註冊的url。使用該URL,我可以正確地獲取文件,但問題是當我嘗試將文件放到存儲桶中時。使用URL我不能把一個文件怎麼一回事,因爲我得到這個消息的錯誤:Presigned URL不適用於PUT,但適用於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>

什麼我失蹤?

+1

我相信HTTP動詞(例如'GET'或'POST')被編碼到預先登記的URL中,所以如果您使用在POST請求中用於'GET'的預先登記的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

相關問題