

# API Gateway での REST API の使用量プランと API キー
<a name="api-gateway-api-usage-plans"></a>

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

## 使用量プランおよび API キーとは
<a name="api-gateway-api-usage-plans-overview"></a>

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

*API キー*は、API へのアクセスを付与するために顧客のアプリケーションデベロッパーに配布する 英数字の文字列値です。API キーと [Lambda オーソライザー](apigateway-use-lambda-authorizer.md)、[IAM ロール](permissions.md)、または [Amazon Cognito](apigateway-integrate-with-cognito.md) を一緒に使用して API へのアクセスを制御できます。ユーザーに代わって API Gateway が API キーを生成することも、[CSV ファイル](api-key-file-format.md)からインポートすることもできます。API Gateway で API キーを生成することも、外部ソースから API Gateway にインポートすることもできます。詳細については、「[API Gateway で REST API の API キーをセットアップする](api-gateway-setup-api-keys.md)」を参照してください。

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

**重要**  
API キー値は一意である必要があります。異なる名前で同じ値の 2 つの API キーを作成しようとすると、API Gateway はそれらを同じ API キーと見なします。  
API キーを複数の使用量プランと関連付けることができます。使用量プランを複数のステージと関連付けることができます。ただし、指定された API キーは API の各ステージの 1 つの使用量プランにのみ関連付けることができます。

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

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

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

**注記**  
使用量プランのスロットリングとクォータはハードリミットではなく、ベストエフォートベースで適用されます。場合によっては、クライアントは設定されているクォータを超えることがあります。コストの管理や API へのアクセスのブロックを行う際に使用プランのクォータやスロットリングに依存しないでください。[AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) を使用してコストをモニタリングすること、および [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) を使用して API リクエストを管理することを検討してください。

## API キーと使用量プランのベストプラクティス
<a name="apigateway-usage-plans-best-practices"></a>

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

**重要**  
API キーを、API へのアクセスを制御するための認証または認可に使用しないでください。使用量プランに複数の API がある場合、その使用量プランの 1 つの API に対して有効な API キーを持つユーザーは、その使用量プランの*すべて*の API にアクセスできます。代わりに、API へのアクセスを制御するには、IAM ロール、[Lambda オーソライザー](apigateway-use-lambda-authorizer.md)、または [Amazon Cognito ユーザープール](apigateway-integrate-with-cognito.md)を使用します。
API Gateway が生成する API キーを使用します。API キーには機密情報を含めないでください。クライアントは通常、ログに記録できるヘッダーで機密情報を送信します。
+ デベロッパーポータルを使用して API を公開している場合は、顧客に表示していなくても、特定の使用量プランのすべての API は顧客からサブスクライブ可能であることに注意してください。
+ 場合によっては、クライアントは設定されているクォータを超えることがあります。コストを制御するために使用計画に依存しないでください。[AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) を使用してコストをモニタリングすること、および [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) を使用して API リクエストを管理することを検討してください。
+ API キーを使用量プランに追加した後で、更新オペレーションが完了するまでに数分かかる場合があります。