【问题标题】:How can I get certificate_id and client_id in AWS IoT Lambda?如何在 AWS IoT Lambda 中获取 certificate_id 和 client_id?
【发布时间】: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'
)

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iot.html#IoT.Client.update_certificate

【问题讨论】:

    标签: amazon-web-services aws-lambda boto3 aws-iot


    【解决方案1】:

    您可以订阅有关该主题的连接事件 $aws/events/presence/connected/+

    这将允许您将客户端 ID 与委托人 ID(证书)相关联。

    https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 2017-09-21
      • 2017-11-28
      • 1970-01-01
      • 2016-10-01
      • 2019-03-27
      • 2019-04-10
      相关资源
      最近更新 更多