クエリの使用 API - Amazon MemoryDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クエリの使用 API

クエリパラメータ

HTTP クエリベースのリクエストはHTTP、動GET詞または 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. RFC 3986 URL が定義する予約されていない文字をエンコードしないでください。非予約文字とは、A〜Z、a〜z、0〜9、ハイフン (-)、アンダーバー (_)、ピリオド (.)、およびチルド ( ~ ) です。

      2. 他のすべての文字についても、%XY (X および Y には HEX 文字の 0-9 および大文字の A-F が入る) によるパーセントエンコードが必要です。

      3. %XY%ZA の形式で拡張 UTF-8 文字をエンコードするパーセント。

      4. パーセントは、スペース文字を %20 (通常エンコードスキーマが行なうような + ではありません) としてエンコードします。

    3. パラメータ値が空であっても、エンコードされたパラメータ名をエンコードされた値から等号 ( = ) (ASCII 文字 61) で区切ります。

    4. 名前と値のペアをアンパサンド ( & ) (ASCII コード 38) で区切ります。

  2. 次の擬似文法に従って署名する文字列を作成します (「\n」はASCII改行を表します)。

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

    HTTPRequestURI コンポーネントは、クエリ文字列URIまでのHTTP絶対パスコンポーネントです。HTTPRequestURI が空の場合は、スラッシュ (/) を使用します。

  3. 先ほど作成した文字列HMAC、キーとしてのシークレットアクセスキー、ハッシュアルゴリズムSHA256SHA1としての RFC2104 準拠を計算します。

    詳細については、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

プロセスへの署名とリクエスト署名の計算の詳細については、トピック「‭Signature Version 4 signing process‭‬‭‬」とそのサブトピックを参照してください。