Amazon web services 是否可以动态更改aws物联网核心规则?
我正在从事物联网自动化机器行业,该行业使用aws物联网核心。 每台机器都有自己的基准温度水平,该温度水平随时间而变化 希望根据基准温度水平触发AWS SNS。 每台机器将数据发布到同一主题,主题之间用分隔符分隔 他们的身份证。 主题名称看起来像bellowAmazon web services 是否可以动态更改aws物联网核心规则?,amazon-web-services,iot,aws-iot,Amazon Web Services,Iot,Aws Iot,我正在从事物联网自动化机器行业,该行业使用aws物联网核心。 每台机器都有自己的基准温度水平,该温度水平随时间而变化 希望根据基准温度水平触发AWS SNS。 每台机器将数据发布到同一主题,主题之间用分隔符分隔 他们的身份证。 主题名称看起来像bellow machine/+/data 其中+符号表示机器id 我的规则写得像贝娄 select * from machine/+/data where temperature > 25 这适用于所有主题现在问题是温度水平 并非所有机器
machine/+/data
其中+符号表示机器id
我的规则写得像贝娄
select * from machine/+/data where temperature > 25
这适用于所有主题现在问题是温度水平
并非所有机器都相同,例如id=1的机器可能
温度水平为30 id=2的另一台机器可能有28
我的问题是,是否有可能根据机器温度触发SNS
使用规则或其他方法来实现这一点吗
提前感谢您的回复。您的方法的问题在于AWS物联网查询的工作方式——一旦查询被激活,AWS将根据您在SELECT子句中提供的主题过滤器,尝试验证/执行每条消息 因此,您不能通过一个查询来实现所需的内容(使用不同的温度水平值) 您的问题中有两个变量-机器id、温度和级别。两者都是相互关联的 您可能希望通过以下方式解决您的问题: 选项1::基本的-创建多个查询(机器id、温度组合各一个)并部署 选项2::Dynamic-将变量作为元组存储在您选择的存储器中,例如AWS DynamoDB。拥有一个DB流/触发器,用于通知表的更改,并使用AWS Lambda进行处理,当数据在DynamoDB中更改时,AWS Lambda会动态地(使用AWS SDK/API)重新创建AWS IoT规则
希望有帮助 可以通过使用,
WHERE
子句中的或函数使物联网规则成为动态的
从
在AWS IoT主题规则中有3种获取数据的方法。可以在WHERE子句求值中使用All
get\u thing\u shadow
文档包括:
SELECT * from 'a/b'
WHERE
get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess")
.state.reported.alarm = 'ON'
如果您的基准温度水平在thing registry中,则可以使用类似的规则:
SELECT * FROM machine/+/data
WHERE
temperature > get_thing_shadow(topic(2),"arn:aws:iam::123456789012:role/AllowsThingShadowAccess")
.state.threshold
为什么不将其存储为设备属性?然后对该属性的查询进行参数化?它位于AWS愿望列表上,功能尚未公开--请参见AWS讨论--愿望列表中的3年?哈哈!说得好。