API Gateway で API キーソースを選択する - Amazon API Gateway

API Gateway で API キーソースを選択する

使用量プランを API と関連付けて API メソッドで API キーを有効にする場合、API への各受信リクエストには API キーが含まれている必要があります。API Gateway はキーを読み取り、使用量プランのキーと照合します。一致する場合、API Gateway は、プランのリクエスト制限とクォータに従ってリクエストを調整します。それ以外の場合は、InvalidKeyParameter 例外がスローされます。その結果、発信者は 403 Forbidden レスポンスを受け取ります。

API Gateway は 2 つのソースのいずれかから API キーを受け取ることができます。

HEADER

API キーを顧客に配布して、各受信リクエストの X-API-Key ヘッダーとして API キーを渡す必要があります。

AUTHORIZER

この認可レスポンスの一部として API キーを返す Lambda オーソライザーを使用することができます。認証レスポンスの詳細については、「API Gateway Lambda オーソライザーからの出力」を参照してください。

注記

考慮すべきベストプラクティスについては、「API キーと使用量プランのベストプラクティス」を参照してください。

API Gateway コンソールを使用して API の API キーソースを選択するには、次の作業を行います。
  1. [API Gateway コンソール] にサインインします。

  2. 既存の API を選択するか、新しい API を作成します。

  3. メインナビゲーションペインで、[API キー] を選択します。

  4. [API の詳細] セクションで [編集] を選択します。

  5. API キーソースで、ドロップダウンリストから Header または Authorizer を選択します。

  6. [Save changes] (変更の保存) をクリックします。

AWS CLI を使用して API の API キーのソースを選択するには、次のように update-rest-api コマンドを呼び出します。

aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER

クライアントが API キーを送信するには、上記の CLI コマンドで valueHEADER に設定します。

API Gateway REST API を使用して API の API キーのソースを選択するには、次のように restapi:update を呼び出します。

PATCH /restapis/fugvjdxtri/ HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20160603T205348Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash} { "patchOperations" : [ { "op" : "replace", "path" : "/apiKeySource", "value" : "HEADER" } ] }

オーソライザーに API キーを戻すには、前の value 入力で AUTHORIZERpatchOperations に設定します。

選択した API キーのソースタイプに応じて、以下のいずれかの手順を使用してヘッダーソースの API キー、またはメソッド呼び出しでオーソライザーから返される API キーを使用します。

ヘッダーソースの API キーを使用するには
  1. 必要な API メソッドで API を作成し、その API をステージにデプロイします。

  2. 新しい使用プランを作成するか、既存のものから選択します。デプロイされた API ステージを使用プランに追加します。使用プランに API キーをアタッチするか、プラン内の既存の API キーを選択します。選択した API キーの値を書き留めます。

  3. API キーを要求するよう API メソッドをセットアップします。

  4. 同じステージに API を再デプロイします。新しいステージに API をデプロイする場合は、必ず新しい API ステージをアタッチするように使用プランを更新します。

これでクライアントから、選択した API キーをヘッダー値とする x-api-key ヘッダーを指定しながら API メソッドを呼び出すことができるようになりました。

オーソライザーソースの API キーを使用するには
  1. 必要な API メソッドで API を作成し、その API をステージにデプロイします。

  2. 新しい使用プランを作成するか、既存のものから選択します。デプロイされた API ステージを使用プランに追加します。使用プランに API キーをアタッチするか、プラン内の既存の API キーを選択します。選択した API キーの値を書き留めます。

  3. トークンベースの Lambda オーソライザーを作成します。認証レスポンスのルートレベルのプロパティとして usageIdentifierKey:{api-key} を含めます。トークンベースのオーソライザーを作成する手順については、「TOKEN オーソライザー Lambda 関数の例」を参照してください。

  4. API キーを要求するように API メソッドを設定し、このメソッドでも Lambda オーソライザーを有効にします。

  5. 同じステージに API を再デプロイします。新しいステージに API をデプロイする場合は、必ず新しい API ステージをアタッチするように使用プランを更新します。

これでクライアントから、明示的に API キーを指定せずに、API キーを要求するメソッドを呼び出すことができるようになりました。オーソライザーから返される API キーは自動的に使用されます。