Amazon API GatewayのWebsocketを試す
Amazon API GatewayのWebsocketを試す:
2018/12/19にAPI gatewayがwebsocketに対応したのでためしみてみます。
https://aws.amazon.com/jp/blogs/news/announcing-websocket-apis-in-amazon-api-gateway/
以下のサンプルになります。
https://github.com/aws-samples/simple-websockets-chat-app
クライアントからWebsocketで接続に行くと、onConnect関数が実行され、コネクションIDがDynamoDBに登録されます。
メッセージを添えてsendMessageアクションを実行すると、sendMessage関数がDynamoDBに保存されたコネクションIDに対して、メッセージを送信する。
SAMで作成したcFnテンプレートがS3のバケットを準備しておきます。
git cloneしてSAM/cFn実行します。
Create APIをクリックする。
WebSocketを選択する。
API Name: WebSocketと入力する。
Route Selection Expression:$request.body.action
Create APIをクリックする。
sendmessageルートを作成する。sendmessageと入力に右横のチェックマークをクリックする。
connectルートにonConnect関数を登録する。
Integration Requestをクリック。
Lambda FunctionにStack名-OnConnect-Functionxxxxを指定します。
上記を、disconnect/sendmessage/default分繰り返します。
defaultは、選択式がAPIルート内の他のrouteKeyに一致しない値を生成する場合に使用されます。今回は特にエラーハンドリング用の関数がないので、仮にonConnectを指定します。
何かしら紐づけておかないとAPIをデプロイするときにエラーになります。
APIをデプロイする。
APIデプロイ完了。
NPMをインストールしてwscatをインストールする。
メッセージ送信用と受信用のターミナルを開いてWebsocketで接続する
以下のJSONを入力する
受信用のターミナルでメッセージが表示されることを確認する。
投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。
はじめに
2018/12/19にAPI gatewayがwebsocketに対応したのでためしみてみます。https://aws.amazon.com/jp/blogs/news/announcing-websocket-apis-in-amazon-api-gateway/
以下のサンプルになります。
https://github.com/aws-samples/simple-websockets-chat-app
作成する構成
クライアントからWebsocketで接続に行くと、onConnect関数が実行され、コネクションIDがDynamoDBに登録されます。
メッセージを添えてsendMessageアクションを実行すると、sendMessage関数がDynamoDBに保存されたコネクションIDに対して、メッセージを送信する。
手順
赤枠の構成をCloudFormationで作成
SAMで作成したcFnテンプレートがS3のバケットを準備しておきます。git cloneしてSAM/cFn実行します。
git clone https://github.com/aws-samples/simple-websockets-chat-app.git cd simple-websockets-chat-app sam package --template-file template.yaml --output-template-file output.yaml --s3-bucket <S3バケット> aws cloudformation deploy --template-file output.yaml --capabilities CAPABILITY_IAM --stack-name websocket-test
青枠のAPI Gatewayの構築
Create APIをクリックする。WebSocketを選択する。
API Name: WebSocketと入力する。
Route Selection Expression:$request.body.action
Create APIをクリックする。
sendmessageルートを作成する。sendmessageと入力に右横のチェックマークをクリックする。
connectルートにonConnect関数を登録する。
Integration Requestをクリック。
Lambda FunctionにStack名-OnConnect-Functionxxxxを指定します。
上記を、disconnect/sendmessage/default分繰り返します。
defaultは、選択式がAPIルート内の他のrouteKeyに一致しない値を生成する場合に使用されます。今回は特にエラーハンドリング用の関数がないので、仮にonConnectを指定します。
何かしら紐づけておかないとAPIをデプロイするときにエラーになります。
APIをデプロイする。
APIデプロイ完了。
確認
NPMをインストールしてwscatをインストールする。npm install -g wscat
wscat -c wss://<API ID>.execute-api.<Region>.amazonaws.com/dev connected (press CTRL+C to quit) > >
{"action":"sendmessage", "data":"hello world"}
connected (press CTRL+C to quit) < hello world >
コメント
コメントを投稿