API Gateway
API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス
API Gateway とは
Amazon API Gateway は、REST API や WebSocket API のエントリーポイントとして、認証、スロットリング、CORS、リクエスト変換を一元管理するマネージドサービスである。Lambda と組み合わせてサーバーレス API を構築する。2015 年の re:Invent で発表され、サーバーレスアーキテクチャの中核を担っている。
API Gateway が担う役割は、マイクロサービスアーキテクチャにおける「API ゲートウェイパターン」そのものだ。クライアントは個々のバックエンドサービスを直接呼び出すのではなく、API Gateway を経由することで、認証・認可・レート制限・ログ記録が一元化される。
REST API vs HTTP API
API Gateway には 2 つの API タイプがある。2019 年に HTTP API が追加され、シンプルなユースケースでは HTTP API が推奨されるようになった。
| 観点 | REST API | HTTP API |
|---|---|---|
| コスト | $3.50/100 万リクエスト | $1.00/100 万リクエスト |
| レイテンシ | 中程度 | 低い (約 50% 削減) |
| WAF 統合 | ✅ | ❌ |
| API キャッシュ | ✅ | ❌ |
| API キー + 使用量プラン | ✅ | ❌ |
| リクエストバリデーション | ✅ | ❌ |
| 認証 | IAM, Cognito, Lambda Authorizer | IAM, Cognito, JWT |
| WebSocket | ✅ (別途 WebSocket API) | ❌ |
| 推奨 | WAF・キャッシュ・API キーが必要な場合 | コスト重視、シンプルな API |
REST API の機能が不要なら HTTP API を選ぶ。コストが 3.5 倍違うのは大きい。
ステージとデプロイ
API Gateway はステージ (dev, stg, prod) ごとに異なる設定を持てる。ステージ変数を使えば、同じ API 定義で環境ごとに異なる Lambda 関数やエンドポイントを呼び分けられる。
/prod → Lambda:prod-function
/dev → Lambda:dev-function
デプロイは「API の変更をステージに反映する」操作で、ステージごとに独立してデプロイできる。
カスタムドメイン
API Gateway にカスタムドメイン (api.example.com) を設定できる。ACM で証明書を発行し、Route 53 でエイリアスレコードを作成する。ベースパスマッピングで複数の API を 1 つのドメインに統合できる。
api.example.com/v1/orders → Orders API
api.example.com/v1/users → Users API
API キー + 使用量プラン
外部パートナーに API を提供する場合、API キーと使用量プランでアクセスを制御する。REST API でのみ利用可能。
| 設定 | 説明 |
|---|---|
| API キー | クライアントの識別トークン |
| 使用量プラン | 日次/月次のリクエスト上限 |
| スロットリング | 秒間リクエスト数の制限 |
| バースト | 瞬間的なリクエスト数の上限 |
CloudFront との組み合わせ
ユーザー → CloudFront (キャッシュ + WAF) → API Gateway → Lambda
CloudFront を前段に置くことで、エッジキャッシュによるレイテンシ削減、WAF によるセキュリティ強化、カスタムドメインの柔軟な管理が可能になる。HTTP API は WAF を直接統合できないため、WAF が必要な場合は CloudFront 経由で適用するのが一般的だ。
よくある落とし穴
| 問題 | 対策 |
|---|---|
| 29 秒タイムアウト | 長時間処理は SQS + Lambda に分離、または Step Functions |
| ペイロード上限 10 MB | 大きなファイルは S3 presigned URL で直接アップロード |
| CORS エラー | HTTP API は自動処理、REST API は手動設定が必要 |
| コールドスタート | Provisioned Concurrency で Lambda のコールドスタートを排除 |
| ステージ変数の未設定 | デプロイ後にステージ変数が空でエラーになるケースに注意 |
API Gateway の背景や設計思想は関連書籍に詳しい。