【发布时间】:2019-06-23 07:51:28
【问题描述】:
我正在使用 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。 例如:
- 当设备首次将其客户端证书连接到 IoT 服务器时,lambda 获取 certificate_id 但未获取 client_id
{
"client_id":"N/A",
"certificateId":"",
"caCertificateId":"",
"timestamp":"",
"certificateStatus":"PENDING_ACTIVATION",
"awsAccountId":"",
"certificateRegistrationTimestamp":""
}
- 在发布任何主题之后,我可以获得 client_id 但没有获得 certificate_id
当客户端第一次连接到 IoT 时,我尝试通过此规则获取 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 iot 功能激活或停用设备
response = client.update_certificate(
certificateId='string',
newStatus='ACTIVE'|'INACTIVE'
)
【问题讨论】:
标签: amazon-web-services aws-lambda boto3 aws-iot