使用查詢 API - Amazon MemoryDB

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

使用查詢 API

查詢參數

HTTP 查詢型請求是使用動詞 GET或 HTTP POST和名為 的查詢參數的HTTP請求Action

每一個查詢請求都須包括一些常用參數,來處理動作的身分驗證和選取。

部分操作有數個參數清單。這些清單是使用 param.n 表示法來指定的。的值 n 是從 1 開始的整數。

查詢請求身分驗證

您只能傳送查詢請求,HTTPS而且您必須在每個查詢請求中包含簽章。本節說明如何建立簽章。下列程序所述的方法也稱為「簽章第 4 版」

下列為用來對 AWS進行驗證要求的基本步驟。這假設您已向 註冊, AWS 並具有存取金鑰 ID 和秘密存取金鑰。

查詢身分驗證程序
  1. 寄件者建構對 的請求 AWS。

  2. 寄件者會計算請求簽章,即具有 SHA-1 雜湊函數的雜湊型訊息驗證碼 (HMAC),如本主題下一節所定義。

  3. 請求的寄件者會將請求資料、簽章和存取金鑰 ID (使用的秘密存取金鑰的金鑰識別符) 傳送至 AWS。

  4. AWS 使用存取金鑰 ID 來查詢秘密存取金鑰。

  5. AWS 會使用用於計算請求中簽章的相同演算法,從請求資料和秘密存取金鑰產生簽章。

  6. 如果簽章相符,則會將請求視為真實請求。若比較失敗,則會捨棄該要求,且 AWS 會傳回錯誤回應。

注意

如果請求包含 Timestamp 參數,針對請求計算出的簽章就會在其值的 15 分鐘後過期。

如果請求包含 Expires 參數,簽章就會於 Expires 參數指定的時間過期。

計算請求簽章
  1. 建立標準化查詢字串,以在本程序稍後使用:

    1. 依參數名稱以自然位元組排序 UTF-8 查詢字串元件。這些參數可以來自 GETURI或來自POST內文 (當 Content-Type 是 Application/ 時x-www-form-urlencoded)。

    2. URL 根據下列規則編碼參數名稱和值:

      1. 請勿URL編碼 3986 RFC 定義的任何未保留字元。這些未預留字元包括 A-Z、a-z、0-9、連字號 (-)、底線 (_)、句點 (.) 及波狀符號 (~)。

      2. 對所有其他含有 %XY 的字元執行百分比編碼,其中 X 和 Y 是十六進位字元 0-9 和大寫 A-F。

      3. 以 %XY%ZA 格式編碼延伸 UTF-8 個字元的百分比...

      4. 將空白字元百分比編碼為 %20 (而非常見編碼機制使用的 +)。

    3. 使用等於符號 ( = ) (ASCII 字元 61) 將編碼參數名稱與編碼值分開,即使參數值為空。

    4. 使用 ampersand ( 和 ) (ASCII 代碼 38) 分隔名稱值對。

  2. 根據下列虛擬文法建立要簽署的字串 ("\n" 代表ASCII新行)。

    StringToSign = HTTPVerb + "\n" + ValueOfHostHeaderInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <from the preceding step>

    HTTPRequestURI 元件是 的HTTP絕對路徑元件,URI最多可達 ,但不包含查詢字串。如果 HTTPRequestURI是空的,請使用正斜線 ( / )。

  3. 計算 RFC 2104 相容HMAC,其中包含您剛建立的字串、以私密存取金鑰作為金鑰,以及以 SHA256或 SHA1作為雜湊演算法。

    如需詳細資訊,請參閱 https://www.ietf.org/rfc/rfc2104.txt

  4. 將結果值轉換成 base64。

  5. 將該值包含為請求中的 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 版簽署程序主題及其子主題。