场外托管集成中心 - 的托管集成 AWS IoT Device Management

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

场外托管集成中心

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 \ --identifier HUB_MANAGED_THING_ID

验证集线器已下线

使用您的账户凭证,并使用上一节中managed_thing_id检索到的凭据运行命令:

aws iot-managed-integrations get-managed-thing \ --identifier HUB_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 }
  • 如果ProvisioningStatusDELETE_IN_PROGRESS,请按照 Hub 恢复中的说明进行操作。

  • 如果不ProvisioningStatusDELETE_IN_PROGRESS,则在托管集成云中关闭集线器的命令要么失败,要么未被托管集成云接收。按照 Hub 恢复中的说明进行操作。

  • 如果离线失败,则您的iotmi_config.json文件将类似于下面的示例文件。

{ "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 \ --identifier HUB_MANAGED_THING_ID \ --force

接下来,调用 GetManagedThing API 并验证它是否返回Managed Thing resource not found。这确认云资源已被删除。

注意

不建议使用这种方法,因为它可能导致云和设备状态不一致。通常,在尝试删除云资源之前,最好确保设备中心成功下线。