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

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

AWS API 請求簽章的元素

重要

除非您使用 AWS SDKs或 CLI,否則您必須撰寫程式碼來計算在請求中提供身分驗證資訊的簽章。Signature 第 4 版中的 AWS 簽章計算可能是一項複雜的任務,我們建議您盡可能使用 AWS SDKs或 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 會使用此資訊來確保請求的有效性和真實性。

  • 演算法:您在簽署程序中使用的演算法。

    • SigV4 – 使用 AWS4-HMAC-SHA256 指定具有HMAC-SHA256雜湊演算法的 Signature 第 4 版。

    • SigV4a – AWS4-ECDSA-P256-SHA256用於指定 ECDSA-P256-SHA-256 雜湊演算法。

  • 登入資料 – 透過串連您的存取金鑰 ID 和登入資料範圍元件而形成的字串。

    • SigV4 – 登入資料範圍包含您的存取金鑰 ID、YYYYMMDD 格式的日期、區域碼、服務碼和aws4_request終止字串,以斜線 (/) 分隔。區域代碼、服務代碼和終止字串必須使用小寫字元。

      AKIAIOSFODNN7EXAMPLE/YYYYMMDD/region/service/aws4_request
    • SigV4a – 登入資料範圍包含 YYYYMMDD 格式的日期、服務名稱和aws4_request終止字串,以斜線 (/) 分隔。請注意,登入資料範圍不包含 區域,因為該區域包含在單獨的標頭 中X-Amz-Region-Set

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

    對於 SigV4a,您必須包含區域集標頭,指定請求將在其中生效的區域集。標頭X-Amz-Region-Set指定為逗號分隔值的清單。下列範例顯示允許在 us-east-1 和 us-west-1 區域提出請求的區域標頭。

    X-Amz-Region-Set=us-east-1,us-west-1

    您可以在區域中使用萬用字元 (*) 來指定多個區域。在下列範例中, 標頭允許在 us-west-1 和 us-west-2 中提出請求。

    X-Amz-Region-Set=us-west-*
  • 簽章 – 表示已計算出之簽章的十六進位編碼字串。您必須使用 Algorithm 參數所指定的演算法計算簽章。

如需詳細資訊,請參閱 身分驗證方法