一个网站提供了一个WebSocket来获取实时数据。我尝试在DynamoDB表中记录从websocket接收到的数据,作为无服务器应用程序的数据源。他们使用websocket的例子是一些使用socket.io-client的Node.JS代码。作为JavaScript,我想使用AWS Lambda函数,但它们并不是为了持续运行。有没有AWS服务来处理这种订阅?我不想仅仅为了这个目的而创建一个小EC2示例来运行一个小应用程序。
我看过的东西:
- Lambda函数-仅适用于短期执行,而非长期运行任务。
- SNS订阅-据我所知,这需要订阅一个SNS出版商。
- Kinesis流-要求生成器使用流PUT API。
如有任何帮助,我们将不胜感激!
4条答案
按热度按时间xxb16uws1#
如果我们谈论的是客户端,那么到目前为止,在Amazon AWS上没有一个解决方案/服务是无服务器的,并且只在套接字的生存时间(从连接到断开连接)内保持活动。
不幸的是,我认为我们只能处理这种场景的示例。
ezykj2lf2#
API Gateway现在支持WebSockets,您可以在其中处理Lambda中的事件,并以简化的方式响应。更多信息请参阅Announcing WebSocket APIs in Amazon API Gateway
AWS中还有另外两个服务可用于实现这一点,
注意:此时您可能需要请求预览AppSync。
jjhzyzn03#
我花了相当长的时间来寻找解决同样问题的方法,但是除了使用ec2服务器之外,似乎没有一种方法可以保持WebSocket客户端运行。
Lambda函数的最大运行时间确实增加到了15分钟,这使得调用一个保持连接客户端长达15分钟的函数是值得的。
https://aws.amazon.com/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-can-run-up-to-15-minutes/
使用定价计算器,它看起来将是5美元的最低始终保持客户端运行
单位换算请求数:4/小时 *(一个月730小时)= 2920/月分配的内存量:128 MB x 1 MB中的0.0009765625 GB = 0.125 GB分配的临时存储量:512 MB x 1 MB中的0.0009765625 GB = 0.5 GB定价计算2,920个请求x 900,000毫秒x 0.001毫秒到秒的转换因子= 2,628,000.00总计算量(秒)0.125 GB x 2,628,000.00秒= 328,500.00总计算量(GB-s)328,500.00 GB-s x 0.0000166667美元= 5.48美元(每月计算费用)2,920个请求x 0.0000002美元= 0.00美元(每月请求费用)0.50 GB - 0.5 GB(无额外费用)=每项功能0.00 GB可计费临时存储Lambda成本-无免费层(每月):5.48美元
fdbelqdn4#
API Gateway直接支持websockets。因此,您可以将APIGW websocketapi连接到lambda函数,然后将其连接到DynamoDB。
提供setting up websockets in APIGW的详细逐步指南。
示例设置如下: