API キーを使用した使用量プランの作成と使用 - Amazon API Gateway

API キーを使用した使用量プランの作成と使用

API を作成、テストして、デプロイすると、API Gateway 使用量プランを使用して、顧客への提供商品として使用できるようになります。選択した API へのアクセスを顧客に許可する使用量プランと API キーを設定し、定義した制限とクォータに基づいてこれらの API へのリクエストのスロットリングを開始できます。これらは API、または API メソッドレベルで設定できます。

使用量プランおよび API キーとは

使用量プランは、デプロイ済みの API ステージとメソッドにアクセスできるユーザーを指定します。リクエストのスロットリングを開始するターゲットリクエストレートを設定することもできます (オプション)。このプランは、API キーを使用して、各キーの関連付けられた API ステージにアクセスできる API クライアントとユーザーを識別します。

API キーは、API へのアクセスを付与するために顧客のアプリケーションデベロッパーに配布する 英数字の文字列値です。API キーと Lambda オーソライザーIAM ロール、または Amazon Cognito を一緒に使用して API へのアクセスを制御できます。ユーザーに代わって API Gateway が API キーを生成することも、CSV ファイルからインポートすることもできます。API Gateway で API キーを生成することも、外部ソースから API Gateway にインポートすることもできます。詳細については、「API Gateway コンソールを使用して API キーをセットアップする」を参照してください。

API キーには名前と値があります。(「API キー」と「API キー値」という用語は、しばしば同じ意味で使用されます。) 値は、20〜128 文字の英数字の文字列です。例えば、apikey1234abcdefghij0123456789 です。

重要

API キー値は一意である必要があります。異なる名前で同じ値の 2 つの API キーを作成しようとすると、API Gateway はそれらを同じ API キーと見なします。

API キーを複数の使用量プランと関連付けることができます。使用量プランを複数のステージと関連付けることができます。ただし、指定された API キーは API の各ステージの 1 つの使用量プランにのみ関連付けることができます。

スロットリングの制限は、リクエストスロットリングを開始するターゲットポイントを設定します。これは API、または API メソッドレベルで設定できます。

クォータ制限は、指定した期間内に送信できる API キーを持つリクエストの目標最大数を設定します。個別の API メソッドを、使用量プラン設定に基づく API キー認証を要求するように設定できます。

スロットリングとクォータ制限は、使用プランのすべての API ステージについて集約される個々の API キーのリクエストに適用されます。

注記

使用量プランのスロットリングとクォータはハードリミットではなく、ベストエフォートベースで適用されます。場合によっては、クライアントは設定されているクォータを超えることがあります。コストの管理や API へのアクセスのブロックを行う際に使用プランのクォータやスロットリングに依存しないでください。AWS Budgets を使用してコストをモニタリングすること、および AWS WAF を使用して API リクエストを管理することを検討してください。

API キーと使用量プランのベストプラクティス

以下は、API キーおよび使用量プランを使用する場合の推奨されるベストプラクティスです。

重要
  • API キーを API の認証または承認に使用しないでください。使用量プランに複数の API がある場合、その使用量プランの 1 つの API に対して有効な API キーを持つユーザーは、その使用量プランのすべての API にアクセスできます。代わりに、IAM ロール、Lambda オーソライザー、または Amazon Cognito ユーザープールを使用します。

  • API Gateway が生成する API キーを使用します。API キーには機密情報を含めないでください。クライアントは通常、ログに記録できるヘッダーで機密情報を送信します。

  • API を公開するためにデベロッパーポータルを使用している場合は、それらを顧客に表示していなくても、指定された使用量プランのすべての API はサブスクライブ可能であることに注意してください。

  • 場合によっては、クライアントは設定されているクォータを超えることがあります。コストを制御するために使用計画に依存しないでください。AWS Budgets を使用してコストをモニタリングすること、および AWS WAF を使用して API リクエストを管理することを検討してください。