本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
參數所指定的演算法計算簽章。
如需詳細資訊,請參閱 身分驗證方法