本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
场外托管集成中心
Hub SDK 板外流程概述
集线器离线过程会将集线器从 AWS Cloud 管理系统中移除。当云端发送DeleteManagedThing请求时,该过程可以实现两个主要目标:
设备端操作:
重置集线器的内部状态
删除所有本地保存的数据
为设备做好准备,以备将来可能重新上线
云端操作:
移除与中心关联的所有云资源
完全断开与先前账户的连接
客户通常在以下情况下启动集线器下线:
更改中心的关联账户
用新设备替换现有集线器
该过程可确保在集线器配置之间实现干净、安全的过渡,从而实现无缝的设备管理和帐户灵活性。
先决条件
-
你必须有一个已载入的集线器。有关说明,请参阅 Hub 入门设置。
-
在位于/data/aws/iotmi/config/
iotmi_config.json的文件中,验证是否iot_provisioning_state显示PROVISIONED。 -
确认中引用的永久证书和密钥
iotmi_config.json存在于其指定路径中。 -
确保代理 HubOnboarding、置备器和 MQTT 代理已正确配置并正在运行。
-
确认集线器没有子设备。在继续操作之前,请使用 DeleteManagedThingAPI 移除所有子设备。
Hub SDK 场外流程
请按照以下步骤退出集线器:
检索 hub_managed_thing ID
该iotmi_config.json文件用于存储托管集成中心的托管事物 ID。此标识符是允许集线器与 AWS IoT 托管集成服务通信的关键信息。托管事物 ID 存储在 JSON 文件的 rw(读写)部分的字段下managed_thing_id。在以下示例配置中可以看到这一点:
{ "ro": { "iot_provisioning_method": "FLEET_PROVISIONING", "iot_claim_cert_path": "PATH", "iot_claim_pk_path": "PATH", "UPC": "UPC", "sh_endpoint_url": "ENDPOINT_URL", "SN": "SN", "fp_template_name": "TEMPLATENAME" }, "rw": { "iot_provisioning_state": "PROVISIONED", "client_id": "ID", "managed_thing_id": "ID", "iot_permanent_cert_path": "CERT_PATH", "iot_permanent_pk_path": "KEY", "metadata": { "last_updated_epoch_time": 1747766125 } } }
向机外集线器发送命令
使用您的账户凭证,并使用上一节中managed_thing_id检索到的凭据运行命令:
aws iot-managed-integrations delete-managed-thing \ --identifierHUB_MANAGED_THING_ID
验证集线器已下线
使用您的账户凭证,并使用上一节中managed_thing_id检索到的凭据运行命令:
aws iot-managed-integrations get-managed-thing \ --identifierHUB_MANAGED_THING_ID
成功和失败场景
成功场景
如果成功执行了移出集线器的命令,则预计会出现以下示例响应:
{ "Message" : "Managed Thing resource not found." }
此外,如果集线器离线命令成功,则iotmi_config.json会观察到以下示例。验证 rw 部分是否仅包含可选iot_provisioning_state的元数据。缺少元数据是可以接受的。 iot_provisioning_state必须是 NOT_ PROVISIONED。
{ "ro": { "iot_provisioning_method": "FLEET_PROVISIONING", "iot_claim_cert_path": "PATH", "iot_claim_pk_path": "PATH", "UPC": "1234567890101", "sh_endpoint_url": "ENDPOINT_URL", "SN": "1234567890101", "fp_template_name": "test-template" }, "rw": { "iot_provisioning_state": "NOT_PROVISIONED", "metadata": { "last_updated_epoch_time": 1747766125 } } }
失败场景
如果下线集线器的命令失败,则预计会出现以下示例响应:
{ "Arn" : "ARN", "CreatedAt" : 1.748968266655E9, "Id" : "ID", "ProvisioningStatus" : "DELETE_IN_PROGRESS", "Role" : "CONTROLLER", "SerialNumber" : "SERIAL_NO", "Tags" : { }, "UniversalProductCode" : "UPC", "UpdatedAt" : 1.748968272107E9 }
{ "ro": { "iot_provisioning_method": "FLEET_PROVISIONING", "iot_claim_cert_path": "PATH", "iot_claim_pk_path": "PATH", "UPC": "123456789101", "sh_endpoint_url": "ENDPOINT_URL", "SN": "123456789101", "fp_template_name": "test-template" }, "rw": { "iot_provisioning_state": "PROVISIONED", "client_id": "ID", "managed_thing_id": "ID", "iot_permanent_cert_path": "PATH", "iot_permanent_pk_path": "PATH", "metadata": { "last_updated_epoch_time": 1747766125 } } }
(可选)下线后 Hub SDK
重要
以下场景列出了在离线 Hub SDK 失败后要采取的可选操作,或者您是否想在离线后重新加入集线器时要采取的操作。
- 重新登机
-
如果成功下线,请按照第 3 步:创建托管事物(队列配置)以及其余的板载流程进行加载 Hub SDK。
- 集线器恢复
-
- 设备中心成功下线和云端下线失败
-
如果 GetManagedThingAPI 调用未返回
Managed Thing resource not found消息,但文件iotmi_config.json已被移除。有关示例 json 文件,请参阅成功场景。要从这种情况中恢复,请参阅强制删除。
- 设备中心下线失败
-
这种情况是指文件
iotmi_config.json未正确卸载。有关示例 json 文件,请参阅失败场景。要从这种情况中恢复,请参阅强制删除。如果仍未脱机,
iotmi_config.json则必须将集线器恢复出厂设置。 - 设备中心离线和云端离线失败
-
在这种情况下,仍
iotmi_config.json未脱机,集线器状态为ACTIVATED、或。DISCOVERED要从这种情况中恢复,请参阅强制删除。如果强制删除失败或仍未脱机,
iotmi_config.json则必须将集线器恢复出厂设置。 - 集线器处于离线状态且集线器状态为 DELETE_IN_PROGRESS
-
在这种情况下,集线器处于离线状态,云端收到离线命令。
要从这种情况中恢复,请参阅强制删除。
- 强制删除
-
要在设备中心未成功下线的情况下删除云资源,请按照以下步骤操作。此操作可能会导致云端和设备状态不一致,从而可能导致将来的操作出现问题。
使用集线器
managed_thing_id和 f orc e 参数调用 DeleteManagedThing API:aws iot-managed-integrations delete-managed-thing \ --identifierHUB_MANAGED_THING_ID\ --force接下来,调用 GetManagedThing API 并验证它是否返回
Managed Thing resource not found。这确认云资源已被删除。注意
不建议使用这种方法,因为它可能导致云和设备状态不一致。通常,在尝试删除云资源之前,最好确保设备中心成功下线。