使用AWS Lambda观看SNS主题并通过websocket进行交付?

时间:2017-10-29 11:55:05

标签: reactjs amazon-web-services websocket aws-lambda amazon-sns

出于测试/调试目的,我将创建一个Web应用程序,模拟我们系统中第三方参与者之一的功能。它应该能够发布和订阅在AWS SNS服务上发送的消息。

我计划制作一个ReactJS网络应用程序,该应用程序调用AWS Lambda中的API。发送消息应该没问题,应用程序中有一些按钮,调用Lambda将SNS消息发布到主题。

但是如何监控发送到我想要观看的相关主题的消息呢?我在考虑使用可以接收消息的websocket。我知道我可以使用SNS消息触发Lambda,但是如何让lambda将这些消息传递给websocket?没有永久服务器会话运行可能吗?我应该与AWS工具箱中的其他内容结合使用吗?

2 个答案:

答案 0 :(得分:3)

您将无法从Lambda函数将websocket数据推送到浏览器,因为浏览器从未启动与Lambda函数的websocket连接,实际上Lambda函数不能托管公共TCP端口,如完全没有。

我建议您将SNS主题配置为推送到SQS队列。然后有一些浏览器端代码轮询SQS队列中的消息。有关详细信息,请参阅this very similar discussion

或者,您可以在您的AWS账户上设置IoT服务,并让Lambda函数将消息推送到IoT主题。您可以使用浏览器subscribe to the IoT topic via a web socket

答案 1 :(得分:0)

我也在寻找完全相同的东西,但是不幸的是,aws sns没有websocket支持。 但是我遇到了一个非常有趣的博客。因此,他所做的就是使用支持websocket和pub-sub的AWS IoT。您可以看看here

编辑: AWS API Gateway提供了以无服务器方式管理Websocket的功能。这是快速入门指南API Gateway Websockets