API Gatewayのスロットリング(流量制御)
API Gatewayのスロットリング(トークンバケット)と、サーバ側/クライアント側の制御、429対応の考え方を整理します。
API Gatewayのスロットリング(流量制御)
Amazon API Gatewayでは、APIへのリクエスト数を制御する「スロットリング」という仕組みが用意されています。これはトークンバケットアルゴリズムに基づき、リクエストごとにバケットからトークンが消費される方式です。
スロットリングの種類
スロットリングは、サーバー側とクライアント側の両方で制御できます。
1. サーバー側のスロットリング
- AWSアカウントレベル
- デフォルトでアカウント全体に定常レート(10,000リクエスト/秒)とバーストレート(5,000リクエスト)が設定されています。
- ステージまたはメソッドレベル
- 特定のステージやAPIメソッドごとに、アカウントレベルの上限値内で個別に制御値を上書きできます。
2. クライアントスロットリング
- メソッドレベル
- クライアントごとの「使用量プラン」に基づき、メソッド単位でスロットリングが適用されます。
- ステージレベル
- クライアントごとの「使用量プラン」に基づき、ステージ単位でスロットリングが適用されます。
制限を超過した場合、API Gatewayは「429 Too Many Requests」エラーを返します。
使用量プランとAPIキー
クライアントごとのスロットリングには「使用量プラン」を利用します。APIキーを発行し、クライアントと使用量プランを紐付けることで、個別の制限や割当が可能です。
- APIキーは認証・認可の仕組みではありません。
- 認証や認可が必要な場合は、Lambdaオーソライザなどの仕組みを併用しましょう。
重要ポイント
- ▸API Gatewayは流量制御で過負荷を防ぐ
- ▸トークンバケットでレート/バーストを制御
- ▸アカウント/ステージ/メソッド単位で上書き可能
- ▸使用量プランでクライアント別制御ができる
- ▸超過時は429 Too Many Requests
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます