web-dev-qa-db-ja.com

AWSを使用してサーバーレスでWebSocketにサブスクライブすることは可能ですか?

Webサイトは、リアルタイムデータを取得するためのWebSocketを提供します。サーバーレスアプリケーションのデータソースのDynamoDBテーブルにwebsocketから受信したデータを記録しようとしています。 websocketの使用方法の例は、socket.io-clientを使用したNode.JSコードです。 JavaScriptでAWS Lambda関数を使用することを考えましたが、それらは常に実行することを目的としていません。この種のサブスクリプションを処理するAWSサービスはありますか?この目的のためだけに小さなEC2インスタンスを作成して小さなアプリケーションを実行したくありません。

私が見たもの:

  • Lambda関数-短時間の実行でのみ、長時間実行されるタスクではありません。
  • SNSサブスクリプション-私が理解していることから、これはSNSパブリッシャーにサブスクライブする必要があります。
  • Kinesis Stream-Streams PUT APIを使用するにはプロデューサーが必要です。

どんな助けでも大歓迎です!

7
Braydon

LambdaとAPI Gatewayはステートレスであるため、Lambdaを直接使用してWebsocket接続を維持することはできません。 AWSには、これを実現するために使用できる2つのサービスがあります。

  • AWS IOT Websockets :-アイデアは、クライアントがIOTトピックにサブスクライブし、Lambdaからメッセージをクライアントにプッシュすることです。

enter image description here

  • AWS AppSync (新しく導入):-LambdaとDynamoDBの間にWebSocketサポートを提供するレイヤーが存在します。

注:現時点では、AppSyncのプレビューをリクエストする必要がある場合があります。

15
Ashan

サーバーレスでこれを行うための plugin が追加されました。

1
caiiiycuk

彼はサーバーになりたくないが、代わりにクライアントになりたくないのか。

したがって、クライアントになることを話している場合、Amazon AWSにはこれまでサーバーレスであり、ソケットの存続時間(接続から切断まで)だけ存続するソリューション/サービスはありません。

残念ながら、私はこの種のシナリオのインスタンスを処理する必要があると思います。

1
Marco Silva