メニュー
Amazon ElastiCache
ユーザーガイド (API Version 2015-02-02)

クエリ API の使用

クエリパラメーター

HTTP クエリベースのリクエストとは、HTTP 動詞 (GET または POST) とクエリパラメータ Action で記述する HTTP リクエストです。

各クエリリクエストに、アクションの認証と選択を処理するための一般的なパラメータがいくつか含まれている必要があります。

オペレーションの中にはパラメータのリストを取るものがあります。これらのリストは、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 のクエリ文字列コンポーネントを並び替えます。パラメータは、GET URI または 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. パーセントは、拡張 UTF-8 文字を %XY%ZA.... 形式でエンコードします。

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

    3. パラメータの値が空値の場合でも、エンコードされるパラメータ名とエンコードされる値の間に等号 (=) (ASCII コード 61) を入れます。

    4. それぞれのパラメータ名と値のペアをアンド (&) (ASCII コード 38) で分割します。

  2. 文字列を作成し、以下の擬似文法に従って ("\n" は ASCII 新規行を意味します) 署名を作成します。

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

    HTTPRequestURI 要素は URI の HTTP 絶対パス要素ですが、クエリ文字列は含みません。HTTPRequestURI が空値の場合は、スラッシュ (/) を使用してください。

  3. 作成したばかりの文字列を使い、シークレットアクセスキーをキーとして、また SHA256 または SHA1 をハッシュアルゴリズムとして、RFC 2104 に準拠した HMAC を計算します。

    詳細については、https://www.ietf.org/rfc/rfc2104.txt を参照してください。

  4. 結果の値を base64 に変換します。

  5. その値は、Signature パラメータの値としてリクエストに含めます。

サンプルのリクエストを次に示します (見やすくするために改行が追加されています)。

Copy
https://elasticache.us-west-2.amazonaws.com/ ?Action=DescribeCacheClusters &CacheClusterIdentifier=myCacheCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-12-01

前のクエリ文字列では、次の文字列に対する HMAC 署名が生成されます。

Copy
GET\n elasticache.amazonaws.com\n Action=DescribeCacheClusters &CacheClusterIdentifier=myCacheCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-12-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE%2F20140523%2Fus-west-2%2Felasticache%2Faws4_request &X-Amz-Date=20141201T223649Z &X-Amz-SignedHeaders=content-type%3Bhost%3Buser-agent%3Bx-amz-content-sha256%3Bx-amz-date content-type: host:elasticache.us-west-2.amazonaws.com user-agent:CacheServicesAPICommand_Client x-amz-content-sha256: x-amz-date:

結果の署名付きリクエストは次のようになります。

Copy
https://elasticache.us-west-2.amazonaws.com/ ?Action=DescribeCacheClusters &CacheClusterIdentifier=myCacheCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-12-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20141201/us-west-2/elasticache/aws4_request &X-Amz-Date=20141201T223649Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=2877960fced9040b41b4feaca835fd5cfeb9264f768e6a0236c9143f915ffa56

プロセスへの署名とリクエスト署名の生成の詳細については、トピック「署名バージョン 4 の署名プロセス」とそのサブトピックを参照してください。