AWS lambda捕获IoT注册表事件

我计划在AWS IoT Registry中生成新东西,一旦生成成功,就将东西arn,东西名称,证书信息写入AWS RDS数据库 .

这是否可以使用lambda capture IoT注册表事件并触发lambda写入数据库?

有什么建议吗?

回答(1)

2 years ago

AWS IoT通过其自己的MQTT代理发布了许多事件 .

在您的情况下,您对 $aws/events/thing/<thingName>/created 主题(https://docs.aws.amazon.com/iot/latest/developerguide/registry-events.html)感兴趣 .

通过某些主题发送消息时,您可以使用AWS IoT Rule引擎自动执行操作(https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) .

这些动作可能是一个lambda(如果你有更多的逻辑,那么你也可以用它来解决这个问题,而无需编写你自己的自定义代码:

所以在你的情况下,你可能会这样做:

{
  "sql": "SELECT thingId thingName timestamp FROM '$aws/events/thing/+/created'",
  "ruleDisabled": false,
  "awsIotSqlVersion": "2016-03-23",
  "actions": [{
    "dynamoDBv2": {
       "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDBv2", 
       "putItem": {
         "tableName": "my_ddb_table"
        }
     }
  }]
}

不幸的是,AWS似乎没有将证书信息发布到注册主题 . 我猜这是因为证书和设备之间没有一对一的关系 .

您可以通过收听 $aws/events/presence/connected/clientId 主题获取此信息;强制执行 clientId === thingId (通常是这种情况),并从消息中记录 principalIdentifierhttps://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html#connect-disconnect) . 您可以使用AWS IoT规则再次自动执行此操作 .