web-dev-qa-db-fra.com

Est-il possible de s'abonner à un WebSocket sans serveur à l'aide d'AWS?

Un site Web offre une prise Web pour obtenir des données en temps réel. J'essaie d'enregistrer les données reçues du websocket dans une table DynamoDB pour une source de données pour une application sans serveur. Leur exemple d'utilisation de websocket est un code Node.JS utilisant socket.io-client. En tant que JavaScript, je pensais utiliser une fonction AWS Lambda, mais ils ne sont pas conçus pour s'exécuter en permanence. Existe-t-il un service AWS pour gérer ce type d'abonnement? Je ne veux pas créer une petite instance EC2 pour exécuter une petite application uniquement à cette fin.

Choses que j'ai regardées:

  • Fonctions Lambda - Uniquement pour les exécutions courtes, pas pour les tâches longues.
  • Abonnements SNS - D'après ce que j'ai compris, cela nécessite de souscrire à un éditeur SNS.
  • Kinesis Stream - Le producteur doit utiliser l'API Streams PUT.

Toute aide serait grandement appréciée!

5
Braydon

Vous ne pouvez pas utiliser Lambda directement pour conserver une connexion Websocket, car Lambda et API Gateway sont sans état. Il existe deux services AWS que vous pouvez utiliser pour y parvenir,

  • AWS IOT Websockets : - L’idée est que les clients s’abonnent aux sujets IOT et que Lambda envoie les messages au client.

 enter image description here

  • AWS AppSync (nouvellement introduit): - Avoir une couche entre Lambda et DynamoDB qui fournira la prise en charge de WebSocket.

Remarque: vous devrez peut-être demander un aperçu de AppSync pour le moment. 

11
Ashan

Maintenant, il y a plugin for serverless pour le faire.

0
caiiiycuk