出于测试/调试目的,我将创建一个Web应用程序,模拟我们系统中第三方参与者之一的功能。它应该能够发布和订阅在AWS SNS服务上发送的消息。
我计划制作一个ReactJS网络应用程序,该应用程序调用AWS Lambda中的API。发送消息应该没问题,应用程序中有一些按钮,调用Lambda将SNS消息发布到主题。
但是如何监控发送到我想要观看的相关主题的消息呢?我在考虑使用可以接收消息的websocket。我知道我可以使用SNS消息触发Lambda,但是如何让lambda将这些消息传递给websocket?没有永久服务器会话运行可能吗?我应该与AWS工具箱中的其他内容结合使用吗?
答案 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