Amazon API Gateway
API の作成、公開、管理、監視を簡単に行えるフルマネージドサービス
何ができるか
Amazon API Gateway は、REST API、HTTP API、WebSocket API を作成・公開・管理するためのフルマネージドサービスです。API のエンドポイント (入口) を提供し、受け取ったリクエストを Lambda 関数や EC2 インスタンスなどのバックエンドサービスに転送します。認証、スロットリング (流量制限)、キャッシュ、CORS 設定などの機能を備えており、API の運用に必要な機能がすべて揃っています。
どのような場面で使うか
モバイルアプリやシングルページアプリケーション (SPA) のバックエンド API、マイクロサービスアーキテクチャの API ゲートウェイ、サードパーティへの API 公開、Lambda 関数の HTTP エンドポイント化、レガシーシステムの API 化など、API を提供するあらゆる場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
ホテルのフロントデスクに例えるとわかりやすいでしょう。宿泊客 (クライアント) はフロントデスク (API Gateway) に要望を伝えます。フロントデスクは要望の内容に応じて、ルームサービス、清掃、コンシェルジュ (各バックエンドサービス) に取り次ぎます。宿泊客は裏方の仕組みを知る必要がなく、フロントデスクが窓口を一本化しています。
API Gateway とは
Amazon API Gateway は、あらゆる規模の API を作成・管理するためのサービスです。API (Application Programming Interface) とは、アプリケーション同士がデータをやり取りするための窓口のことです。たとえば、スマートフォンアプリがサーバーからデータを取得する際、API を通じてリクエストを送り、レスポンスを受け取ります。API Gateway はこの窓口の役割を担い、セキュリティや流量制御などの共通機能を一元的に提供します。
API の種類
API Gateway は 3 種類の API をサポートしています。REST API は最も機能が豊富で、API キー管理、使用量プラン、リクエスト検証などの高度な機能を備えています。HTTP API は REST API のシンプル版で、料金が約 70% 安く、Lambda や HTTP バックエンドとの統合に最適です。WebSocket API はリアルタイムの双方向通信に対応しており、チャットアプリやリアルタイムダッシュボードに適しています。
Lambda との連携
API Gateway と Lambda の組み合わせは、サーバーレスアーキテクチャの代表的なパターンです。API Gateway がクライアントからの HTTP リクエストを受け取り、対応する Lambda 関数を呼び出してレスポンスを返します。サーバーの管理が一切不要で、リクエスト数に応じた完全な従量課金となるため、小規模な API から大規模な API まで柔軟に対応できます。
はじめかた
API Gateway を使い始めるには、API Gateway コンソールで「API の作成」をクリックします。API の種類を選択し、リソース (URL パス) とメソッド (GET、POST など) を定義します。統合先として Lambda 関数を指定すれば、数分で API が完成します。「API のデプロイ」をクリックしてステージにデプロイすると、公開 URL が発行されます。
Azure・オンプレミスとの比較
AWS の優位点
- Lambda との統合により、サーバーレス API をゼロインフラで構築でき、リクエスト単位の完全従量課金を実現できる
- REST API、HTTP API、WebSocket API の 3 種類を用途に応じて選択でき、HTTP API は REST API 比で約 70% のコスト削減が可能
- AWS WAF や Cognito との統合が標準で提供されており、認証・認可・DDoS 対策を追加コードなしで実装できる
注意点
- REST API と HTTP API では料金と機能が異なるため、要件に合った種類を選択すること。シンプルな用途なら HTTP API がコスト効率が良い
- API のスロットリング設定を適切に行わないと、バックエンドサービスに過剰な負荷がかかる可能性がある
- 無料利用枠として、REST API は月間 100 万回、HTTP API は月間 100 万回のリクエストが 12 か月間無料
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。