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操作)
