使用 amazon sqs 与每个客户一起收听他们自己的消息

use amazon sqs with every client listening for their own messages

我正在尝试设置 alexa 智能家居技能,并希望使用 aws sqs 让客户收听消息以打开和关闭设备。我遇到的问题是我如何做到这一点,以便每个客户只能收听针对他们的特定消息。我想在特定用户的 turnOn 队列中放置一条消息,并在消息或其他内容中使用他们的身份验证令牌,这样只有使用该身份验证令牌收听的用户才能收到该消息。基本上我正在尝试设置它以便每个用户只能接收针对他们设备的消息。这可能吗?我四处寻找教程,但找不到任何相关文档。

如果这不可能,那么直接向客户端发送消息告诉它打开或打开的最佳方式是什么。我假设它是某种 MQTT。

可以为每个用户或设备创建一个专用的 SQS 队列,但从可维护性和成本方面来看,这都不是一个好的设计。

一个帐户中可以拥有的 SQS 队列数量没有公布的限制,但 SQS 是根据轮询进行计费的,因此让大量设备轮询其专用队列会变得非常昂贵。

但是,从安全的角度来看,可以确保此方法的安全。您可以在 SQS 前面放置一个 API 来授权令牌,然后轮询适当的 SQS 队列。或者,您可以使用 STS 使用 API 将凭据临时提供给特定队列,以避免中间处理。

我只推荐这种方法用于玩具示例,例如黑客马拉松或构建仅供个人使用的东西。即便如此,也只是因为编码和理解其工作原理相当简单,但这确实效率不高。


这个问题的合适解决方案是使用 AWS IoT。这提供了一个托管的 MQTT 实现,您可以在其上注册设备并为适当的主题分配权限。这里的计费是每条消息。

使用 AWS IoT 需要设置和理解更多内容,但总的来说,该方法对于大量设备更有效,而且可扩展性和生产就绪性也更高。