AWS上でAPI を作成、公開、モニタリング を 簡単に行う ためのAPI管理サービス。
受信したAPI コールと転送データ量に応じて課金される従量課金制サービスです。
Amazon API GatewayはAPIへのアクセスを IAM のアクセス権限によって制御することができます。そのためには、API の呼び出し等を API コール元にアクセスを許可する IAM ポリシーを作成して設定することが必要です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:リージョン:アカウントID:APIID/ステージ/HTTPメソッド/リソースパス"
]
}
]
}
API Gatewayの利用例
-
HTTP経由の呼び出しリクエストという要件は、API Gatewayを利用する典型的なユースケースとなります。
-
Amazon Kinesis Data StreamsとAmazon API Gatewayを統合して、REST APIからデータポイントにアクセス できるように構成することが可能です。
-
Amazon API Gatewayでは、簡単にWebsocketで接続するAPIが作成できます。マネージドサービスなので、冗長化構成も勝手にやってくれているので、とても簡単にWebsocketAPIを作成することができます。
-
API Gateway自体はサーバを管理する必要がないため、Lambdaと組み合わせることでサーバレスアプリケーションを構成することができます。
APIキャッシュ
Amazon API Gatewayでは、APIキャッシュを有効にすることで、エンドポイントのレスポンスがキャッシュされるようにできます。キャッシュを有効にすると、エンドポイントへの呼び出しの数を減らすことができ、APIリクエストのレイテンシー短縮に効果的です。
キャッシュを有効にすると、API Gatewayは秒単位で指定できるTTLが切れるまで、エンドポイントからのレスポンスをキャッシュします。その後、API Gatewayは、エンドポイントへのリクエストを行う代わりに、キャッシュからのエンドポイントレスポンスを確認してリクエストに応答します。
APIキャッシュのデフォルトのTTL値は300秒です。最大のTTL値は3600秒です。TTL=0にするとキャッシュは無効になります。
スロットリング制限設定
APIリクエストに対する一時的な高負荷発生に備えて、Amazon API Gatewayの処理性能を向上させるためには、API Gatewayのスロットリング制限設定とキャッシュを有効化することが必要である。
WebSocket
WebSocketは、リアルタイムな双方向通信を提供するプロトコルで、AWS上での使用は様々なケースで見られます。以下は、AWSでWebSocketを利用する主なケースの例です。
リアルタイムアプリケーション:
WebSocketは、リアルタイムなデータ更新が必要なアプリケーションに適しています。例えば、オンラインゲーム、チャットアプリケーション、リアルタイムな協力作業ツールなどがこれに該当します。
IoTデバイスとの通信:
IoTデバイスとの通信において、WebSocketはデバイスからのデータをリアルタイムでクラウドに送信し、逆にクラウドからデバイスに指示を送るのに利用されることがあります。
モバイルアプリケーション:
モバイルアプリケーションがサーバーとリアルタイムに通信する必要がある場合、WebSocketが有用です。例えば、リアルタイムな通知、更新、チャットなどが挙げられます。
サーバーレスアーキテクチャ:
AWS LambdaやAmazon API Gatewayと組み合わせて、WebSocketをサーバーレスアーキテクチャに統合することができます。Lambdaを使用すると、サーバーレス関数がWebSocketイベントを処理できます。
リアルタイムデータ分析:
データのリアルタイム分析が必要な場合、WebSocketを使用してクライアントがリアルタイムでデータを受信できるようにすることが考えられます。
API Gatewayを使用したWebSocket:
Amazon API Gatewayを使用して、WebSocket APIを簡単に構築できる。これにより、サーバーレスアーキテクチャや既存のバックエンドサービスとの統合が容易になります。
チャットアプリケーション:
チャットアプリケーションは、WebSocketを使用してリアルタイムなメッセージングを提供する典型的な例です。WebSocketは、クライアントとサーバー間の低レイテンシ通信を実現します。
上記のケース以外にも、要件やアプリケーションの性質によってはWebSocketが有用であることがあります。AWSでは、Amazon API GatewayやAWS App Runnerなど、WebSocketをサポートするさまざまなサービスが提供されています。
VPCリンク
API Gatewayからプライベートサブネット内のAWSリソースへアクセスさせたい場合はVPCリンクを作成します。これにより、APIとプライベートサブネット内のリソースとの間で、インターネットを経由しないセキュアな通信が可能になります。
オーソライザー
API Gatewayのオーソライザーを使用すると、APIへのアクセス制御を実装することができます。オーソライザーには、Amazon Cognitoのユーザープールを使用する方法と、Lambda関数を使用する方法があります。
Amazon Cognitoのユーザープールを使用する方法は、Amazon Cognitoが提供するマネージド型の認証機能を使用するため、開発者は認証プロセスについて自身で管理する必要がありません。
ステージ
API Gatewayでは、ステージという概念を使用して、APIの異なるバージョンや開発段階を管理します。これにより、開発、テスト、本番などの異なる環境でAPIを個別に管理できます。
Canaryリリース
Canaryリリースは、新しいバージョンのAPIを段階的にリリースする方法です。まず、既存の本番ステージに新しいAPIバージョンをデプロイし、一部のトラフィックを新しいバージョンに向けます。