我正在使用AWS IoT Core。我已经为https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/之后的设备创建了客户端证书。一切都很好。问题是,现在我想将客户端certificate_id和client_id保存在同一表中以在它们之间建立关系,但是我无法通过一次lambda调用来获取certificate_id和client_id。 例如:
{
"client_id":"N/A",
"certificateId":"",
"caCertificateId":"",
"timestamp":"",
"certificateStatus":"PENDING_ACTIVATION",
"awsAccountId":"",
"certificateRegistrationTimestamp":""
}
当客户端第一次连接到物联网时,我试图通过此规则获取client_id。
SELECT clientId() as client_id , * FROM '$aws/events/certificates/registered/111111111111111'
在Lambda上,我打印事件:
{
client_id: 'N/A',
certificateId: '222222',
caCertificateId: '111111111111111',
timestamp: 3333,
certificateStatus: 'PENDING_ACTIVATION',
awsAccountId: '44444',
certificateRegistrationTimestamp: '55555'
}
这里的“ 1111 ..”是我的CA证书。
我想获取certificate_id,以便可以使用boto3物联网功能激活或停用设备
response = client.update_certificate(
certificateId='string',
newStatus='ACTIVE'|'INACTIVE'
)
答案 0 :(得分:0)
您可以订阅有关该主题的连接事件 $ aws / events / presence / connected / +
这将使您可以将客户端ID与主体ID(证书)相关联。
请参见https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html