AWS API 請求簽名的元素 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS API 請求簽名的元素

重要

除非您使用 AWS SDK 或 CLI,否則您必須撰寫程式碼來計算在要求中提供驗證資訊的簽章。簽名版本 4 中的 AWS 簽名計算可能是一項複雜的任務,我們建議您盡可能使用 AWS SDK 或 CLI。

凡是使用 Signature Version 4 簽署的每個 HTTP/HTTPS 請求都必須包含下列元素。

端點規格

指定您要向其傳送請求的端點的 DNS 名稱。此名稱通常包含服務代碼和區域。例如,us-east-1 區域中 Amazon DynamoDB 的端點為 dynamodb.us-east-1.amazonaws.com

若為 HTTP/1.1 請求,必須包含 Host 標頭。若為 HTTP/2 請求,則可包含 :authority 標頭或 Host 標頭。為符合 HTTP/2 規格,應僅使用 :authority 標頭。並非所有服務都支援 HTTP/2 請求。

如需每個服務支援的端點,請參閱 AWS 一般參考 中的服務端點和配額

動作

指定服務的 API 動作。例如,DynamoDB CreateTable 動作或 Amazon EC2 DescribeInstances 動作。

如需每個服務支援的動作,請參閱服務授權參考

動作參數

指定請求中指定的動作參數。每個 AWS API 動作都有一組必要和可選參數。API 版本通常是必要參數。

如需 API 動作支援的參數,請參閱服務的《API 參考》

日期

指定請求的日期和時間。請求中附上日期和時間有助於防止第三方攔截您的請求再於稍後重新提交。您在憑證範圍中指定的日期必須與請求日期相符。

此時間戳記必須為 UTC 時間,而且必須使用下列 ISO 8601 格式:YYYYMMDDTHHMMSSZ。例如 20220830T123600Z。不包含時間戳記的毫秒數。

您可以使用 date 標頭或 x-amz-date 標頭,或包含 x-amz-date 作為查詢參數。如果找不到 x-amz-date 標頭,那麼我們會尋找 date 標頭。

身分驗證資訊

您傳送的每個要求都必須包含下列資訊。 AWS 使用此信息來確保請求的有效性和真實性。

  • 演算法 – 搭配使用 AWS 4-HMAC-SHA256HMAC-SHA256 雜湊演算法來指定 Signature Version 4。

  • 憑證 – 由您的存取金鑰 ID、YYYYMMDD 格式的日期、區域代碼、服務代碼和 aws4_request 終止字串所組成的字串,以斜線 (/) 分隔。區域代碼、服務代碼和終止字串必須使用小寫字元。

    AKIAIOSFODNN7EXAMPLE/YYYYMMDD/region/service/aws4_request
  • 已簽署的標頭 – 要包含在簽章中的 HTTP 標頭,以分號 (;) 分隔。例如 host;x-amz-date

  • 簽章 – 表示已計算出之簽章的十六進位編碼字串。您必須使用 Algorithm 參數所指定的演算法計算簽章。