API Gateway

API のエントリーポイントとして認証、スロットリング、ルーティングを一元管理する AWS サービス

AWSAPI

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 の背景や設計思想は関連書籍に詳しい。

関連用語