AWS IoT публикует множество своих событий через своего собственного брокера MQTT.
В вашем случае вас интересует тема $aws/events/thing/<thingName>/created
(https://docs.aws.amazon.com/iot/latest/developerguide/registry-events.html).
Когда отправляются сообщениячерез определенные разделы вы можете использовать механизм правил IoT AWS для автоматического выполнения действий (https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html).
Эти действия могут быть лямбда-выражением (если у вас больше логики вне того, чем вы поделились ввопрос), но есть и правило DynamodB, которое можно использовать для решения этой проблемы без написания собственного пользовательского кода:
Итак, в вашем случае вы можете сделать что-то вроде этого:
{
"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
(которыйкак правило, так) и запись principalIdentifier
из сообщения (https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html#connect-disconnect).. Вы можете еще раз автоматизировать это с помощью правил AWS IoT.