0

我们正在使用 AWS IoT。

我们有预定义的主题 (+/device/),设备会在其中发布消息。

但是有可能,设备可以将消息发布到任何其他主题。

我想计算这些单个设备发布到所有主题的消息数量并实施限制。

我尝试使用 ( +/* 或/ ) 等通配符主题名称创建 IoT 规则,但这些通配符主题似乎都不起作用。

是否有任何通配符主题名称,我可以使用它来捕获来自所有主题的消息?

或者有没有办法将所有主题的所有消息转储到 DynamoDB 或 S3 中的某个地方,并计算特定时间段内来自各个设备的消息数量?

4

1 回答 1

1

我尝试使用通配符主题名称(如(+/* 或 /)创建 IoT 规则,但这些通配符主题似乎都不起作用。

是否有任何通配符主题名称,我可以使用它来捕获来自所有主题的消息?

+并且#是 AWS IoT 规则的相关通配符。请参阅https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-from.html

您可以使用以下语句配置规则以捕获来自所有主题的消息。

SELECT * FROM '#'

或者有什么方法可以将所有主题的所有消息转储到 DynamoDB 或 S3 的某个地方,并计算特定时间段内来自各个设备的消息数量?

一种方法是基于上述规则创建规则,并在每条消息上传递客户端 ID(使用clientid()函数)。此规则的操作可以将客户端 ID 写入 DynamoDB 或 S3。然后可以使用此信息进行计算。

另一种方法可能是将消息和客户端 ID 写入 Kinesis Data Stream 并使用 Kinesis Data Analytics 检测错误设备。

于 2019-11-09T11:47:32.097 回答