多个 ClientId 使用关联到一个事物上的一个证书

0

【以下的问题经过翻译处理】 我有一个由两个模块组成的设备:一个高功率模块和一个低功率模块。高功率模块连接到 IoT,但如果什么都没有发生,它会进入待机模式,低功率模块会唤醒并连接到 IoT。高功率模块在MQTT客户端中使用${thingName}作为clientId,我希望低功率模块使用与高功率模块相同的证书,但是不同的clientId。对于高功率模块,我有一个IoT iot:Connect策略,其资源为arn:aws:iot:REGION:ACCOUNT_ID:client/${iot:Connection.Thing.ThingName},它可以正常工作。对于低功率模块,我想使用clientId${thingName}-low。我尝试将iot:Connect策略设置为arn:aws:iot:REGION:ACCOUNT_ID:client/${iot:ClientId},但客户端无法连接。如果一个证书附加到一个Thing上,这是否意味着我只能使用${thingName}作为clientId`? 另外:当我将连接策略附加到设备组时,低功率模块无法连接。当我直接将相同的策略附加到证书时,它可以连接。

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,micro-jumbo。

另外:当我将连接策略附加到设备组时,低功耗模块无法连接。当我直接将相同的策略附加到证书时,它可以连接。

这是因为没有与低功耗模块使用的客户端ID匹配的Thing名称。因此,当您使用低功耗客户端ID连接时,找不到Thing组成员资格。因此,它不会应用Thing组策略。

暂时不考虑策略细节,有几点要注意:

  1. 似乎高功率模块和低功率模块从来不会同时连接。对于IoT Core连接的要求而言,它们只需要在同时连接时,使用不同的客户端ID。
  2. 您是否会对高功率和低功率模块进行独立设备管理?例如,仅向低功率模块发送job(即OTA)?如果是这样,将高功率和低功率模块都注册成为注册表中自己独立的Thing将会使你受益。

在上述两种情况下,您将不再会遇到一个Thing拥有两个不同的客户端ID的情况。

如果一个证书附加到一个Thing上,这是否意味着我只能使用${thingName}作为clientId

如果连接的唯一策略资源是${iot:Connection.Thing.ThingName},则是可以使用${thingName}作为客户端ID的。否则不用。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则