【问题标题】:Can I dynamically set the Timestream table in an IoT Rule?我可以在 IoT 规则中动态设置时间流表吗?
【发布时间】:2022-07-04 19:51:23
【问题描述】:
在 AWS IoT 中创建将消息发送到我的 Timestream 数据库的规则时,它迫使我选择要发送到的数据库和表。
目前,我对每个用户的遥测数据都有一个单独的表,这些消息将来自许多不同的来源。
我是否必须为每个主题创建一个新规则(即iot/data/000001 转储到时间流表000001 等),还是有办法根据消息本身中的元数据动态选择表?
【问题讨论】:
标签:
amazon-web-services
mqtt
aws-iot
amazon-timestream
【解决方案1】:
我不知道像这样动态配置它的方法。从这个意义上说,规则是相当有限的。
但是,根据您的需要,您可以做的是使用 Lambda 操作并使用例如 boto3 和 python(或其他语言的等价物)更动态地将值写入 Timestream,并且如果您可以接受 一些延迟 如果您有繁重的工作量,我建议将 Kinesis 流放在 IoT 和 lambda 之间。完整的设置如下所示:
IoT 规则 -> SQL:Select * from /iot/data/# -> IoT 规则:AWS Kinesis
然后,
将 AWS Lambda 设置为 Kinesis 流使用者 -> 在 Lambda 中:根据数据批量写入时间流表。
您还可以尝试做的事情(我不知道这是否可行)是使用:
SELECT *, topic(2) as idx from /iot/data/# 获取对主题最后一段的引用作为有效负载中的值。如果我没记错的话topic(n) 是基于 0 的,但在使用前只需确认一下