跳至內容

當我嘗試存取使用 AWS KMS 受管金鑰加密的 Amazon S3 物件時,如何對 "Requests require AWS Signature Version 4" 錯誤進行疑難排解?

1 分的閱讀內容
0

我嘗試存取使用 AWS Key Management Service (KMS) 加密的 Amazon Simple Storage Service (Amazon S3) 物件。但我收到以下錯誤:"Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4"。

解決方法

以下原因可能導致 "Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4" 錯誤訊息:

  • 您的請求未使用 AWS 第 4 版簽署程序進行簽章。
  • 您提出了匿名請求。

您的請求未使用 AWS 第 4 版簽署程序進行簽署

當您將第 2 版簽署程序與 AWS KMS 加密物件一起使用時,您可能會收到錯誤訊息。一些 S3 REST API 端點和 AWS 區域仍然支援使用第 2 版簽署程序簽署的請求。不過,最佳實務是使用第 4 版簽署程序登入。如需詳細資訊,請參閱針對 Amazon S3 關閉 (已棄用) 的 AWS 第 2 版簽署程序

您可以向支援第 2 版簽署程序的區域中的儲存貯體,發出使用第 2 版簽署程序簽署的請求。但是,AWS KMS 要求您的請求必須使用第 4 版簽署程序進行簽署。

若要識別您用於儲存貯體中物件請求的簽署程序版本,請執行以下動作:

  • 使用 AWS CloudTrail 事件日誌
  • 檢查 API 的授權標頭。標頭必須包含 AWS4-HMAC-SHA256
    **注意:**如果您產生了預先簽章網址,請檢查查詢參數是否包含 ?X-Amz-Algorithm=AWS4-HMAC-SHA256。如果找不到查詢參數,請修改程式碼以使用第 4 版簽署程序。

**注意:**對於指定 AWS KMS 受管金鑰的請求,您必須使用 SSL 或 TLS。如果您未使用 SSL 或 TLS,且透過不安全的連線發出請求,那麼您會收到以下錯誤:

"An error occurred (InvalidArgument) when calling the operation_performed operation: Requests specifying Server Side Encryption with AWS KMS managed keys must be made over a secure connection.""Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4"

您提出了匿名請求

匿名請求是未使用 AWS 憑證簽署的請求。例如,您使用瀏覽器或 HTTP 用戶端上的物件網址來下載 S3 物件。

物件網址的範例為 https://bucketname.s3.region.amazonaws.com/folder/file.txt

以下是執行 curl 命令以發出匿名請求的範例:

curl -vo ./local/path/file.txt https://bucketname.s3.region.amazonaws.com/folder/file.txt

為避免錯誤訊息,請確保您的請求已使用 AWS 憑證簽署。

AWS 官方已更新 1 年前