Amazon API Gateway の設計パターン - REST API と HTTP API の選定基準

API Gateway の REST API と HTTP API の違い、認証・認可パターン、スロットリング設計、Lambda プロキシ統合の実践手法を解説します。

REST API と HTTP API の選定基準

この記事は約 4 分で読めます。 API Gateway は REST API と HTTP API の 2 種類を提供しています。HTTP API は 2019 年に登場した新しいタイプで、REST API の主要機能をカバーしつつ、料金が最大 71% 安く、レイテンシも低く設計されています。Lambda 関数や HTTP エンドポイントへのプロキシが主な用途であれば HTTP API を選択すべきです。REST API を選ぶべきケースは、API キーと使用量プランによるサードパーティ向け API の公開、リクエスト/レスポンスの変換 (マッピングテンプレート)、WAF との統合、エッジ最適化エンドポイント、リクエストバリデーション機能が必要な場合です。新規プロジェクトでは HTTP API をデフォルトとし、HTTP API にない機能が必要な場合にのみ REST API を検討するアプローチを推奨します。

この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

認証・認可パターン

API Gateway は複数の認証方式をサポートしています。Cognito ユーザープールオーソライザーは、Cognito が発行する JWT トークンを API Gateway が自動検証する方式です。トークンの検証ロジックを自前で実装する必要がなく、最も手軽に認証を導入できます。Lambda オーソライザーは、カスタムの認証ロジックを Lambda 関数で実装する方式です。独自のトークン形式、外部 IdP との連携、IP アドレスベースの制御など、柔軟な認可ロジックが必要な場合に使用します。Lambda オーソライザーの結果はキャッシュ可能で、TTL を設定することで認証リクエストの重複実行を削減できます。IAM 認証は AWS の SigV4 署名でリクエストを認証する方式で、AWS サービス間の内部通信に適しています。

スロットリングと使用量プラン

API Gateway のスロットリングはトークンバケットアルゴリズムで実装されています。アカウントレベルのデフォルト上限はリージョンあたり 10,000 リクエスト/秒で、バーストは 5,000 リクエストです。ステージレベルとメソッドレベルでより細かい制限を設定でき、特定のエンドポイントがバックエンドを過負荷にすることを防止できます。使用量プランは REST API 固有の機能で、API キーごとに日次・月次のリクエスト上限とスロットリングレートを設定します。外部パートナーに API を公開する場合、パートナーごとに異なるレート制限を適用できます。429 Too Many Requests レスポンスを受け取ったクライアントは、指数バックオフでリトライする実装が推奨されます。

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。

まとめ

API Gateway はサーバーレスアーキテクチャの入口として、認証・スロットリング・モニタリングを API レイヤーで一元管理するサービスです。HTTP API をデフォルトの選択肢とし、エンタープライズ機能が必要な場合に REST API を選択する判断基準を持つことで、コストとレイテンシを最適化できます。

AWS の優位点

  • HTTP API は REST API と比較して最大 71% 低コストかつ低レイテンシで、シンプルな Lambda プロキシや HTTP プロキシに最適
  • REST API は API キー管理、使用量プラン、リクエスト検証、WAF 統合など、エンタープライズ向けの機能を提供する
  • Cognito ユーザープールオーソライザーと Lambda オーソライザーで柔軟な認証・認可パターンを実装できる
  • ステージ変数で環境ごとの Lambda 関数 ARN やエンドポイント URL を切り替え、単一の API 定義で複数環境を運用できる
  • スロットリング設定でバックエンドの過負荷を防止し、使用量プランで API キーごとのレート制限を個別に制御できる

同じテーマの記事