我试图设置一个alexa智能家居技能,并希望使用aws sqs让客户端监听消息以打开和关闭事物。我遇到的问题是我如何制作它,以便每个客户端只能听取特定的消息给他们。我想在特定用户的turnOn队列中放入一条消息,并在消息或其他内容中使用他们的身份验证令,并且只有使用该身份验证令牌的用户才能收到该消息。基本上我试图设置它,以便每个用户只能接收用于他们设备的消息。这可能吗?我四处寻找教程,无法找到任何相关文档。
如果不可能,那么将消息直接发送给客户端告诉它打开或打开的最佳方式是什么。我假设它是某种MQTT。
答案 0 :(得分:3)
可以为每个用户或设备创建一个专用的SQS队列,但从可维护性预测和成本预测来看,这不是一个好的设计。
您在帐户中可以拥有的SQS队列数量没有公布的限制,但SQS是根据民意调查结算的,因此有大量设备轮询其专用队列将会非常昂贵。
但是,从安全角度来看,可以确保这种方法的安全。您可以在SQS前放置一个API来授权令牌,然后轮询相应的SQS队列。或者,您可以使用STS使用API将临时凭证暂存到特定队列,以避免中间处理。
我只推荐这种方法用于玩具示例,例如黑客马拉松或仅用于个人用途的东西。即使这样,只是因为编码和理解它是如何工作的相当简单,但这实际上并不高效。
此问题的适当解决方案是使用AWS IoT。这提供了一个托管MQTT实现,您可以在其上注册设备并为相应的主题分配权限。这里的计费是按消息。
使用AWS IoT可以设置和理解更多内容,但总体而言,该方法对于大量设备更有效,并且还具有更高的可扩展性和生产准备。