ある企業が、Amazon API Gateway(REST API)を使ったサービスで特定のクライアント(特定の API キーを持つ顧客)からのリクエスト数を制限したい。1 つの顧客が大量のリクエストを送信してシステム全体に影響を与えないようにしたい。最も適切な方法はどれか。
- A. Lambda 関数内でリクエストカウンターを DynamoDB に記録し、上限を超えた場合にエラーを返す。
- B. AWS WAF でリクエストレート制限ルールを設定して全体のリクエスト数を制限する。
- C. EC2 セキュリティグループで特定の IP アドレスからのアクセスを制限する。
- D. API Gateway の使用量プラン(Usage Plan)と API キーを使用して、顧客ごとにリクエスト数のスロットリング制限(1 秒あたりのリクエスト数と 1 日あたりのクォータ)を設定する。
解答と解説を見る
正解: D
API Gateway の使用量プランはサービスの特定の顧客(API キー単位)に対してスロットリング(TPS 制限)とクォータ(日次・週次・月次のリクエスト数上限)を設定できる。API キーを顧客ごとに発行し、使用量プランに紐付けることで、特定顧客の過剰リクエストが他の顧客のサービスに影響を与えるのを防げる。選択肢CのEC2 セキュリティグループは API Gateway のバックエンドではなく、API キーに基づく顧客ごとの制限はできない。選択肢Aは Lambda + DynamoDB でのカスタム実装は開発・運用コストが高く、API Gateway のビルトイン機能(使用量プラン)で実現できることをカスタム実装する必要がない。選択肢BのWAF のリクエストレート制限は IP アドレスやヘッダーに基づく全体的なレート制限であり、API キー単位の顧客別制限には使えない。
📚 関連サービスの解説: Amazon API Gateway