ある企業が AWS 上で構築した API サービスに対して、特定のクライアント(モバイルアプリ、パートナー API、内部サービス)に異なるレート制限とアクセス権限を設定したいと考えています。モバイルアプリクライアントには毎秒 100 リクエスト、パートナーには毎秒 1,000 リクエスト、内部サービスには無制限のアクセスを許可し、各クライアントの使用状況を個別に監視したいと考えています。最も適切な実装はどれですか?
- A. AWS WAF のレート制限ルールを使用して、全クライアントに同一のレート制限を適用する
- B. 各クライアントに別々の API Gateway ステージ(dev、partner、internal)を作成し、ステージごとにスロットリングを設定する
- C. Amazon API Gateway の使用量プラン(Usage Plan)とクライアント種別ごとに異なる API キーを発行する。モバイルアプリ用・パートナー用・内部サービス用の3つの使用量プランを作成し、それぞれのスロットリング設定とクォータを定義する。CloudWatch メトリクスで API キー別の使用状況を監視し、閾値超過時に SNS アラートを設定する
- D. すべてのクライアントに同一の API キーを発行し、IP アドレスでクライアントを判別してレート制限を実装する
解答と解説を見る
正解: C
API Gateway の使用量プランはクライアント種別ごとに異なるスロットリング(RPS)とクォータ(月間リクエスト数)を定義し、API キーに紐付けることで細かいアクセス制御が実現できます。CloudWatch で API キー別の使用量メトリクスを確認できます。内部サービスはレート制限なし(上限なし)の使用量プランを作成することで対応できます。 D: 同一 API キーでは個別クライアントの制御が不可能で、IP アドレスによる判別は NAT ゲートウェイや CDN を経由する場合に機能しません。 A: AWS WAF のレート制限は IP アドレスベースで全体的な DDoS 対策に使うものであり、クライアント種別ごとの細かいレート制限と使用量監視には対応していません。 B: 別ステージへの分割は API の管理を複雑にし、同じ API リソースを複数回維持する必要があります。使用量プランの方がはるかにシンプルです。
📚 関連サービスの解説: Amazon API Gateway ・ Amazon CloudWatch