跳至内容

从AWS IoT规则中用物品组过滤消息

0

【以下的问题经过翻译处理】 在IoT规则SQL查询中,是否可能仅选择特定物品组中的消息?

例如:SELECT * FROM '$aws/events/presence/disconnected/#' WHERE clientId.thinggroup = "dev"

专家

已提问 3 年前88 查看次数

1 回答
0

【以下的回答经过翻译处理】 **方法1:**构建一个Lambda函数,使用以下代码从设备中提取组名:

SELECT * FROM '$aws/events/presence/disconnected/#' WHERE aws_lambda("MyLambdaToExtractGroup",{"clientid":clientId}).groupname= "dev"

使用此方法时,请考虑在https://docs.aws.amazon.com/general/latest/gr/iot-core.html#limits_iot中找到的ListThingGroupsForThing API的限额(根据地区为100个或50个TPS,可调整)。如果您在这里面遇到一些限制,方法2提供了几乎无限的可扩展性。

方法2: 另一种方法是在DynamoDB中为每个ClientId保存一个组名称,然后使用以下代码:

SELECT * FROM '$aws/events/presence/disconnected/#' WHERE  get_dynamodb("ClientIdToGroupMapping", "clientId", clientId, "arn:aws:iam::12345678910:role/getdynamo").groupname = "dev"

要为每个ClientId存储组名称,可以在另一个IoT规则中使用https://docs.aws.amazon.com/iot/latest/developerguide/registry-events.html方法。

当然,根据您想要在IoT规则中处理有效负载的方式,可能有更具成本效益的选项。您能多提供一些细节吗?(即您打算使用哪种Actions操作)

专家

已回答 3 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。