好的,所以我有一个具有可扩展 Web 层的弹性 beanstalk 应用程序,在 ELB 后面提供服务。长话短说,我需要能够为我的 Web 层中的特定实例订阅 SNS 主题。使用标准方法获取实例 ip 地址对我来说是否安全(如 Python 中的详细说明 How can I get the IP address of eth0 in Python?),然后使用该 ip 作为 http 订阅者简单地订阅 SNS 主题?
为什么?好问题...
我的数据模型由许多对象组成,其中许多对象可以附加一组用户,这些用户可能希望能够观察这些对象。我的应用程序中的这个 Web 层负责处理客户端应用程序的套接字接口(使用 socket.io)。
在系统中创建用户时,也会为该用户创建一个 SNS 主题,允许在用户感兴趣的对象发生变化时向该用户推送通知。我计划设置的方式是,客户端应用程序将通过 socket.io 连接到 EB,此时它连接的服务器实例将订阅该用户的 SNS 主题。然后当一个有趣的对象发生变化时,通知将发布到相关用户的主题,从而通知服务器实例客户端应用程序有一个打开的连接,然后可以通过套接字发送消息。
我认为订阅特定实例而不是 Web 层的外部 CNAME 或 ip 很重要,因为客户端应用程序连接到特定实例,因此只有该实例才能通过其套接字发送消息。订阅负载均衡器并不好,因为通知可能会传递到用户未连接到的实例。
我相信上面的问题就是我所需要的,但如果我的推理似乎有缺陷,我愿意接受创造性的解决方案?
这种架构不太适合您的用例。
相反,请尝试: