本日より、任意のサーバーをプロビジョニングして管理することなく、Amazon API GatewayでWebSocket APIを使用して双方向通信アプリケーションを構築できます。 HTTPベースのAPIは、リクエスト/レスポンスモデルを使用して、クライアントがサービスにリクエストを送信し、サービスがクライアントに同期して応答します。 WebSocketベースのAPIは本質的に双方向です。 これは、クライアントがメッセージをサービスに送信し、サービスが独立してメッセージをクライアントに送信できることを意味します。 この双方向の振る舞いにより、クライアント/サーバーとのやりとりがより豊富になります。これは、明示的なリクエストをする必要のないクライアントにデータをプッシュできるためです。 WebSocket APIは、チャットアプリケーション、コラボレーションプラットフォーム、マルチプレイヤーゲーム、金融取引プラットフォームなどのリアルタイムアプリケーションでよく使用されます。 このブログでは、WebSocket APIとAPI Gatewayを使用してサーバーレスのリアルタイムチャットアプリケーションを構築する方法について説明します。 概要 歴史的に、WebSocket APIを構築するためには、WebSocketプロトコルの基礎となる永続的な接続の管理を担当するホストの設定が必要でした。API Gatewayでは、これはもはや必要ではありません。 API Gatewayは、クライアントとサービス間の接続を処理します。 AWS Lambda、Amazon Kinesis、その他のHTTPエンドポイントなどのHTTPベースのバックエンドを使用してビジネスロジックを構築できます。 まず、API GatewayのWebSocket APIの概念をいくつか紹介します。 1つは、ルートと呼ばれる新しいリソースタイプです。ルートは、API Gatewayが特定のタイプのクライアントリクエストを処理する方法を記述し、ルートを識別するために提供する値であるrouteKeyパラメータを含みます。 WebSocket APIは、1つまたは複数のルートで構成されています。特定のインバウンドリクエストで使用するルートを決定するには、ルートセレクションエクスプレッション(選択式)を指定します。式は、ルートのrouteKey値の1つに対応する値を生成する着信リクエストに対して評価されます。 API Gatewayでルートに使用できる3つの特別なrouteKey値があります。 $default – 選択式がAPIルート内の他のrouteKeyに一致しない値を生成する場合に使用されます。 これは、例えば、一般的なエラー処理メカニズムを実装するために使用できます。 $connect – クライアントがWebSocket APIに最初に接続するときに、関連するルートが使用されます。 $disconnect – クライアントがAPIから切断すると、関連するルートが使用されます。 この呼び出しは、ベストエフォート方式で行われます。 これらの特別なrouteKey値のいずれかのルートを指定する必要はありません。 サーバレスなリアルタイムチャットアプリケーションの構築 API Gatewayの新しいWebSocket API機能の使い方を理解するために、リアルタイムチャットアプリの構築方法を紹介します。 簡単にするため、このアプリには1つのチャットルームしかないと仮定します。 アプリに含まれる機能は次のとおりです。 クライアントはWebSocket APIに接続するときにチャットルームに参加します。 バックエンドは、ユーザーがWebSocket APIに接続した後に提供されるコールバックURLを使用して、特定のユーザーにメッセージを送信できます。 […]