本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用查詢 API
查詢參數
HTTP 查詢型請求是使用動詞 GET或 HTTP POST和名為 的查詢參數的HTTP請求Action
。
每一個查詢請求都須包括一些常用參數,來處理動作的身分驗證和選取。
部分操作有數個參數清單。這些清單是使用 param.
表示法來指定的。的值 n
n
是從 1 開始的整數。
查詢請求身分驗證
您只能傳送查詢請求,HTTPS而且您必須在每個查詢請求中包含簽章。本節說明如何建立簽章。下列程序所述的方法也稱為「簽章第 4 版」。
下列為用來對 AWS進行驗證要求的基本步驟。這假設您已向 註冊, AWS 並具有存取金鑰 ID 和秘密存取金鑰。
查詢身分驗證程序
-
寄件者建構對 的請求 AWS。
-
寄件者會計算請求簽章,即具有 SHA-1 雜湊函數的雜湊型訊息驗證碼 (HMAC),如本主題下一節所定義。
-
請求的寄件者會將請求資料、簽章和存取金鑰 ID (使用的秘密存取金鑰的金鑰識別符) 傳送至 AWS。
-
AWS 使用存取金鑰 ID 來查詢秘密存取金鑰。
-
AWS 會使用用於計算請求中簽章的相同演算法,從請求資料和秘密存取金鑰產生簽章。
-
如果簽章相符,則會將請求視為真實請求。若比較失敗,則會捨棄該要求,且 AWS 會傳回錯誤回應。
注意
如果請求包含 Timestamp
參數,針對請求計算出的簽章就會在其值的 15 分鐘後過期。
如果請求包含 Expires
參數,簽章就會於 Expires
參數指定的時間過期。
計算請求簽章
-
建立標準化查詢字串,以在本程序稍後使用:
-
依參數名稱以自然位元組排序 UTF-8 查詢字串元件。這些參數可以來自 GETURI或來自POST內文 (當 Content-Type 是 Application/ 時x-www-form-urlencoded)。
-
URL 根據下列規則編碼參數名稱和值:
-
請勿URL編碼 3986 RFC 定義的任何未保留字元。這些未預留字元包括 A-Z、a-z、0-9、連字號 (-)、底線 (_)、句點 (.) 及波狀符號 (~)。
-
對所有其他含有 %XY 的字元執行百分比編碼,其中 X 和 Y 是十六進位字元 0-9 和大寫 A-F。
-
以 %XY%ZA 格式編碼延伸 UTF-8 個字元的百分比...
-
將空白字元百分比編碼為 %20 (而非常見編碼機制使用的 +)。
-
-
使用等於符號 ( = ) (ASCII 字元 61) 將編碼參數名稱與編碼值分開,即使參數值為空。
-
使用 ampersand ( 和 ) (ASCII 代碼 38) 分隔名稱值對。
-
-
根據下列虛擬文法建立要簽署的字串 ("\n" 代表ASCII新行)。
StringToSign = HTTPVerb + "\n" + ValueOfHostHeaderInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <from the preceding step>
HTTPRequestURI 元件是 的HTTP絕對路徑元件,URI最多可達 ,但不包含查詢字串。如果 HTTPRequestURI是空的,請使用正斜線 ( / )。
-
計算 RFC 2104 相容HMAC,其中包含您剛建立的字串、以私密存取金鑰作為金鑰,以及以 SHA256或 SHA1作為雜湊演算法。
如需詳細資訊,請參閱 https://www.ietf.org/rfc/rfc2104.txt
。 -
將結果值轉換成 base64。
-
將該值包含為請求中的
Signature
參數值。
例如,以下是範例請求 (為了清楚起見,已加入分行符號)。
https://memory-db.us-east-1.amazonaws.com/ ?Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01
針對上述查詢字串,您會計算下列字串的HMAC簽章。
GET\n memory-db.amazonaws.com\n Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE%2F20140523%2Fus-east-1%2Fmemorydb%2Faws4_request &X-Amz-Date=20210801T223649Z &X-Amz-SignedHeaders=content-type%3Bhost%3Buser-agent%3Bx-amz-content-sha256%3Bx-amz-date content-type: host:memory-db.us-east-1.amazonaws.com user-agent:ServicesAPICommand_Client x-amz-content-sha256: x-amz-date:
結果為下列簽署的請求。
https://memory-db.us-east-1.amazonaws.com/ ?Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20141201/us-east-1/memorydb/aws4_request &X-Amz-Date=20210801T223649Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=2877960fced9040b41b4feaca835fd5cfeb9264f768e6a0236c9143f915ffa56
如需簽署程序和計算請求簽章的詳細資訊,請參閱 簽章第 4 版簽署程序主題及其子主題。