如何在AWS物联网核心中检查设备是否离线



检查AWS物联网核心是否仍然离线的最佳实践是什么?

对许多人来说,能够查询AWS物联网的状态将是他们应用程序的重要组成部分。Lucky AWS在这里提供了如何获取生命周期事件的最佳实践:https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

在文档中,有一节描述了如何处理生命周期事件,其中他们提到,在收到断开连接生命周期事件后,您应该等待一段时间,然后检查设备是否仍处于脱机状态。

当该消息可用并被处理(由Lambda或其他服务(时,您可以先检查设备是否仍处于脱机状态,然后再采取进一步行动。

这里的问题是如何检查设备是否仍处于脱机状态?

文档中建议的基础设施是IoT规则,订阅主题"$aws/事件/存在/断开连接/clientId"将在SQS队列上创建消息。在lambda函数使用消息之前,SQS队列将使用deliveryDelay属性延迟消息。在这个lambda函数中,我们应该检查设备是否仍处于脱机状态。

我可以简单地实现一个带有设备状态和时间戳的dynamodb表,每次发生连接或断开事件时都会毫不延迟地更新它。但必须有一种更聪明的方法来确定设备是否仍然离线?

您已经有了答案。一旦触发断开连接事件,您将假设客户端处于脱机状态,除非IoT Core在主题"$aws/events/presence/connected/clientId"上发送同一客户端的更新。

显然,您需要订阅这两个主题。

如果你从一开始就考虑为什么需要物联网,那么在大多数情况下,事物索引是个坏主意。这只对亚马逊有好处,但不会给你任何价值。

您可以使用Thing Indexing。它可以选择索引设备的连接状态(thingConnectivityIndexingMode(。

最新更新