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 キーソースを選択するには、次の作業を行います。
-
[API Gateway コンソール] にサインインします。
-
既存の API を選択するか、新しい API を作成します。
-
メインナビゲーションペインで、[API キー] を選択します。
-
[API の詳細] セクションで [編集] を選択します。
-
API キーソースで、ドロップダウンリストから
Header
またはAuthorizer
を選択します。 -
[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 コマンドで value
を HEADER
に設定します。
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
入力で AUTHORIZER
を patchOperations
に設定します。
選択した API キーのソースタイプに応じて、以下のいずれかの手順を使用してヘッダーソースの API キー、またはメソッド呼び出しでオーソライザーから返される API キーを使用します。
ヘッダーソースの API キーを使用するには
-
必要な API メソッドで API を作成し、その API をステージにデプロイします。
-
新しい使用プランを作成するか、既存のものから選択します。デプロイされた API ステージを使用プランに追加します。使用プランに API キーをアタッチするか、プラン内の既存の API キーを選択します。選択した API キーの値を書き留めます。
-
API キーを要求するよう API メソッドをセットアップします。
-
同じステージに API を再デプロイします。新しいステージに API をデプロイする場合は、必ず新しい API ステージをアタッチするように使用プランを更新します。
これでクライアントから、選択した API キーをヘッダー値とする x-api-key
ヘッダーを指定しながら API メソッドを呼び出すことができるようになりました。
オーソライザーソースの API キーを使用するには
-
必要な API メソッドで API を作成し、その API をステージにデプロイします。
-
新しい使用プランを作成するか、既存のものから選択します。デプロイされた API ステージを使用プランに追加します。使用プランに API キーをアタッチするか、プラン内の既存の API キーを選択します。選択した API キーの値を書き留めます。
-
トークンベースの Lambda オーソライザーを作成します。認証レスポンスのルートレベルのプロパティとして
usageIdentifierKey:
を含めます。トークンベースのオーソライザーを作成する手順については、「TOKEN オーソライザー Lambda 関数の例」を参照してください。{api-key}
-
API キーを要求するように API メソッドを設定し、このメソッドでも Lambda オーソライザーを有効にします。
-
同じステージに API を再デプロイします。新しいステージに API をデプロイする場合は、必ず新しい API ステージをアタッチするように使用プランを更新します。
これでクライアントから、明示的に API キーを指定せずに、API キーを要求するメソッドを呼び出すことができるようになりました。オーソライザーから返される API キーは自動的に使用されます。