17

一个网站提供了一个 websocket 来获取实时数据。我正在尝试在 DynamoDB 表中记录从 websocket 接收到的数据,以作为无服务器应用程序的数据源。他们如何使用 websocket 的示例是一些使用 socket.io-client 的 Node.JS 代码。作为 JavaScript,我想使用 AWS Lambda 函数,但它们并不是为了持续运行。是否有 AWS 服务来处理此类订阅?我不想为了这个目的而制作一个小的 EC2 实例来运行一个小型应用程序。

我看过的东西:

  • Lambda 函数 - 仅适用于短期执行而非长时间运行的任务。
  • SNS 订阅 - 据我了解,这需要订阅 SNS 发布者。
  • Kinesis Stream - 要求生产者使用 Streams PUT API。

任何帮助将不胜感激!

4

3 回答 3

21

难道你们看不出他不想成为服务器,而是客户吗?

因此,如果我们正在谈论成为客户端,那么到目前为止,在 Amazon AWS 上还没有解决方案/服务,它是无服务器的,并且仅在套接字的生存时间内(从连接到断开连接)保持活动状态。

不幸的是,我认为我们只能为这种场景使用实例。

于 2019-07-20T21:41:22.587 回答
9

API Gateway 现在支持 WebSocket,您可以在其中处理 Lambda 中的事件并以简化的方式响应。有关更多信息,请参阅在 Amazon API Gateway 中宣布 WebSocket API

在此处输入图像描述

您还可以使用 AWS 中的其他两项服​​务来实现此目的,

  • AWS IOT Websockets :- 这个想法是客户端将订阅 IOT 主题,并从 Lambda 将消息推送到客户端。

在此处输入图像描述

  • AWS AppSync(新引入):- 在 Lambda 和 DynamoDB 之间有一个层,它将提供 WebSocket 支持。

注意:您目前可能需要申请 AppSync 的预览版。

于 2017-12-13T05:56:31.570 回答
-2

API Gateway直接支持 websockets。因此,您可以将 APIGW websocket api 连接到 lambda 函数并将其连接到 DynamoDB。

提供了在 APIGW 中设置 websocket 的详细分步指南。

一个示例设置可能是:

# 1. Create API Gateway Websocket
# 2. Create integration
aws apigatewayv2 create-integration 
  --api-id APIGW_ID --integration-type AWS_PROXY 
  --integration-method POST
  --integration-uri arn:aws:apigateway:REGION:lambda:path/2015-03-31/functions/LAMBDA_ARN/invocations
于 2021-02-19T09:46:21.890 回答