我们正在使用AWS IoT。
我们有预定义的主题(+ / device /),设备在其中发布消息。
但是设备有可能将消息发布到其他任何主题。
我想计算通过这些单独的设备发布到所有主题的消息的数量,并实现限制。
我尝试使用(+ / *或 / )之类的通配符主题名称创建IoT规则,但这些通配符主题似乎都不起作用。
是否有通配符主题名称,可用来捕获所有主题中的消息?
或者是否有任何方法可以将有关DynamoDB或S3中所有主题的所有消息转储,并计算特定时间段内来自各个设备的消息数?
答案 0 :(得分: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。然后可以使用这些信息进行计算。
另一种方法可能是将消息和clientid写入Kinesis Data Stream,然后使用Kinesis Data Analytics检测错误的设备。