API リクエストを調整してスループットを向上させる - Amazon API Gateway

API リクエストを調整してスループットを向上させる

API のスロットリングおよびクォータを設定して、多すぎるリクエストで API の負荷が高くなりすぎないように保護できます。スロットルとクォータの両方はベストエフォートベースで適用されるため、これらは保証されたリクエスト上限ではなく、目標として考える必要があります。

API Gateway は、トークンバケットアルゴリズムを使用してトークンでリクエストをカウントし、API へのリクエストを調整します。特に API Gateway では、アカウントのすべての API に送信されるリクエストのレートとバーストをリージョンごとに検証します。トークンバケットアルゴリズムでは、これらの制限の事前定義されたオーバーランがバーストによって許可されますが、場合によっては、他の要因によって制限がオーバーランされることがあります。

リクエストの送信数がリクエストの定常レートおよびバーストを超えると、API Gateway はリクエストを調整を開始します。クライアントは、この時点で 429 Too Many Requests エラーレスポンスを受け取ることがあります。このような例外をキャッチすると、クライアントは 失敗したリクエストをレート制限する方法で再送信できます。

API デベロッパーは、API の個々のステージまたはメソッドに目標制限を設定して、アカウントのすべての API にわたるパフォーマンス全体を向上させることができます。別の方法として、使用量プランを有効にして、指定したリクエストレートおよびクォータに基づいて、クライアントのリクエスト送信数でスロットリングを設定することもできます。

API Gateway でスロットリング制限設定が適用される方法

API のスロットリングおよびクォータ設定を構成する前に、Amazon API Gateway によってこれらの設定がどのように適用されるかを理解しておくことをお勧めします。

Amazon API Gateway のスロットリングに関連する設定には、4 つの基本的なタイプがあります。

  • AWS スロットリングの制限は、リージョン内のすべてのアカウントとクライアントに適用されます。これらの制限設定は、リクエストが多すぎるために API —およびアカウント—が処理しきれなくなることを防ぎます。これらの制限は AWS によって設定され、お客様が変更することはできません。

  • アカウントごとの制限は、指定したリージョンのアカウント内のすべての API に適用されます。このアカウントレベルのレート制限は、申請に応じて引き上げることができます。API のタイムアウトが短く、ペイロードが小さい場合、高い制限を設定できます。リージョンごとのアカウントレベルのスロットリング制限の引き上げを申請するには、AWS サポートセンターにお問い合わせください。詳細については、「Amazon API Gateway のクォータと重要な注意点」を参照してください。これらの制限は、AWS スロットリングの制限以上に高くすることはできません。

  • API ごと、ステージごとのスロットリング制限は、ステージの API メソッドレベルで適用されます。すべてのメソッドに同じ設定を構成することも、メソッドごとに異なるスロットル設定を構成することもできます。これらの制限は、AWS スロットリングの制限以上に高くすることはできません。

  • クライアントあたりのスロットリング制限は、クライアント ID として使用プランに関連付けられた API キーを使用するクライアントに適用されます。これらの制限は、 アカウントごとの制限以上に高くすることはできません。

API Gateway のスロットリングに関連する設定は、次の順序で適用されます。

  1. 使用量プランで API ステージに設定したクライアントあたり、またはメソッドあたりのスロットリング制限

  2. API ステージに設定したメソッドあたりのスロットリング制限

  3. リージョンごとのアカウントレベルのスロットリング

  4. AWS リージョンのスロットリング

リージョンごとのアカウントレベルのスロットリング

API Gateway はデフォルトで、リージョンごとに AWS アカウント内のすべての API 全体で定常状態のリクエスト/秒 (RPS) を制限します。また、リージョンごとに AWS アカウント内のすべての API にわたってバースト (最大バケットサイズ) を制限します。API Gateway では、バースト制限は、API Gateway が 429 Too Many Requests エラーレスポンスを返す前に処理する同時リクエスト送信の目標最大数を表します。スロットリングクォータの詳細については、「Amazon API Gateway のクォータと重要な注意点」を参照してください。

使用量プランの API レベルとステージレベルのスロットリング目標の設定

使用量プランでは、 [使用量プランの作成] で、API またはステージレベルでのすべてのメソッドのメソッドあたりのスロットリング目標を設定できます。

使用量プランのメソッドレベルのスロットリング目標の設定

[使用量プラン] で、使用量プランを作成する に示すように、メソッドレベルの追加のスロットリング目標を設定できます。これらは、API Gateway コンソールの、[メソッドスロットリングの設定] 設定で、Resource=<resource>Method=<method> を指定して設定されます。たとえば、PetStore サンプルに、Resource=/petsMethod=GET を指定できます。