サーバーレス API 構築 - Amazon API Gateway で実現するスケーラブルな API 基盤
Amazon API Gateway と Lambda を活用したサーバーレス API の構築方法を解説します。
サーバーレス API の概念と API Gateway の位置づけ
API はモダンアプリケーションの中核であり、フロントエンドとバックエンド、マイクロサービス間、外部パートナーとの連携を担います。Amazon API Gateway は、REST API、HTTP API、WebSocket API を作成・公開・管理するフルマネージドサービスです。アカウント単位の既定のスロットル上限はリージョンあたり 10,000 リクエスト/秒 (バースト 5,000 リクエスト) で、上限緩和を申請すれば数十万リクエスト/秒の規模まで引き上げられ、トラフィックの急増にも自動的にスケールします (2026 年 8 月時点)。API Gateway の内部アーキテクチャは、リクエストの受信、認証・認可、スロットリング、バックエンド呼び出し、レスポンス変換の各ステージをパイプライン的に処理する設計です。この設計思想により、各ステージを独立して設定・最適化でき、API のライフサイクル全体を宣言的に管理できます。オンプレミスで API サーバーを運用する場合、Nginx や Kong などのリバースプロキシの構築、SSL 証明書の管理、ロードバランサーの設定、スケーリングの設計が必要です。API Gateway はこれらすべてをマネージドで提供し、API の設計とビジネスロジックの実装に集中できます。
REST API と HTTP API の使い分け
API Gateway は REST API と HTTP API の 2 つのタイプを提供します。REST API はフル機能の API 管理を提供し、API キー管理、使用量プラン、リクエスト/レスポンスの変換 (VTL テンプレート)、キャッシュ、WAF 統合、リクエストバリデーションなどの高度な機能を備えています。HTTP API は REST API と比較して最大 71% 低コストで、レイテンシも低く、シンプルな API やプロキシ統合に最適です。HTTP API は OIDC と OAuth 2.0 の JWT オーソライザーをネイティブサポートし、Cognito や Auth0 などの ID プロバイダーとの統合が容易です。料金面では、HTTP API が 100 万リクエストあたり 1.29 USD であるのに対し、REST API は 100 万リクエストあたり 4.25 USD です (2026 年 8 月時点・東京リージョン。いずれも最初の課金階層の単価で、リージョンと利用量の階層によって単価は変わります)。以下は選択の判断基準です。
# HTTP API を選ぶケース
- Lambda プロキシ統合のみで十分
- JWT ベースの認証で対応可能
- コスト最適化を優先
# REST API を選ぶケース
- API キー + 使用量プランが必要
- リクエスト/レスポンスの変換が必要
- WAF 統合やキャッシュが必要
- リクエストバリデーションが必要REST API の API キャッシュ機能は、0.5 GB から 237 GB までのキャッシュ容量を選択でき、バックエンドへのリクエストを削減してレスポンス時間の短縮とコスト削減を同時に実現します。
認証・認可と API セキュリティ
API Gateway は多層的なセキュリティ機能を提供します。Lambda オーソライザーを使えば、カスタムの認証・認可ロジックを実装でき、JWT トークン、OAuth、SAML など任意の認証方式に対応できます。Cognito ユーザープールとの統合により、ユーザー登録、サインイン、MFA、トークン管理を含む完全な認証フローを API Gateway だけで構成できます。リソースポリシーにより、特定の IP アドレス、VPC エンドポイント、AWS アカウントからのアクセスに制限できます。使用量プランと API キーにより、外部パートナーごとのレート制限とクォータ管理が可能です。AWS WAF との統合により、SQL インジェクション、XSS、DDoS 攻撃からの保護を追加できます。相互 TLS (mTLS) 認証もサポートし、クライアント証明書による双方向認証を実現します。オンプレミスの API サーバーでは、これらのセキュリティ機能を個別に実装・統合する必要があり、開発と運用の負荷が大幅に増加します。
WebSocket API とリアルタイム通信
API Gateway の WebSocket API は、双方向のリアルタイム通信をサーバーレスで実現します。チャットアプリケーション、リアルタイムダッシュボード、ゲームのマルチプレイヤー通信、IoT デバイスの制御など、持続的な接続が必要なユースケースに対応します。WebSocket API は接続管理を自動的に行い、Lambda 関数で $connect、$disconnect、$default の各ルートイベントを処理します。接続 ID を DynamoDB に保存することで、特定のクライアントへのメッセージ送信やブロードキャストが可能です。クォータには注意が必要で、アイドル接続のタイムアウトは 10 分、1 接続の最大持続時間は 2 時間であり、いずれも引き上げ申請ができません (2026 年 8 月時点)。そのため長時間の接続を前提とするアプリケーションでは、クライアント側から定期的にメッセージを送出してアイドルタイムアウトを回避しつつ、2 時間ごとの再接続と状態の復元を設計に織り込みます。料金は東京リージョンの場合、100 万メッセージあたり 1.26 USD、接続時間 100 万分あたり 0.315 USD です (2026 年 8 月時点)。API Gateway の WebSocket API は完全な従量課金であり、接続がない時間帯のコストはゼロです。この料金モデルの違いは、トラフィックの変動が大きいアプリケーションにおいて大きなコスト差を生みます。
API のデプロイとライフサイクル管理
API Gateway は API のバージョニングとステージ管理を組み込みで提供します。ステージ変数を使えば、dev、staging、prod の各環境で異なるバックエンド Lambda 関数やエンドポイントを指定でき、環境ごとの設定を API 定義から分離できます。カナリアリリース機能により、新バージョンの API にトラフィックの一部 (例: 10%) だけを振り向け、問題がなければ段階的に 100% に移行するデプロイ戦略を実現できます。SAM (Serverless Application Model) を使った IaC 管理では、API の定義、Lambda 関数、IAM ロールを 1 つのテンプレートで宣言的に管理できます。
Resources:
ApiFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs22.x
Events:
GetItems:
Type: HttpApi
Properties:
Path: /items
Method: GETCloudWatch メトリクスとの統合により、API のレイテンシ、エラー率、リクエスト数をリアルタイムに監視し、異常検知時にアラームを発報できます。X-Ray との統合により、API Gateway から Lambda、DynamoDB に至るリクエストの全経路をトレースし、パフォーマンスボトルネックを特定できます。
API Gateway の料金
(2026 年 8 月時点・東京リージョン) HTTP API は 100 万リクエストあたり 1.29 USD、REST API は 4.25 USD です。WebSocket API は 100 万メッセージあたり 1.26 USD で、これに接続時間 100 万分あたり 0.315 USD が加算されます。Lambda の料金 (100 万リクエストあたり 0.20 USD + 実行時間に応じた課金) と合わせて、サーバーレス API 全体のコストを見積もります。単価はリージョンと利用量の課金階層で変わるため、見積もりの際は対象リージョンの公式料金表で確認します。HTTP API をデフォルトの選択肢とし、WAF 統合や使用量プランが必要な場合のみ REST API を選択してコストを最適化します。
まとめ - サーバーレス API 基盤の選択
Amazon API Gateway は、サーバーレス API 基盤として REST、HTTP、WebSocket の 3 つの API タイプを包括的にサポートします。HTTP API の 100 万リクエストあたり 1.29 USD (2026 年 8 月時点・東京リージョン) という低コスト、REST API の高度な管理機能、WebSocket API の従量課金リアルタイム通信を、ユースケースに応じて使い分けることで、最適な API 基盤を構築できます。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトおよび公式ドキュメントです。最新の仕様 / 料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。