你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将设备迁移到 Azure IoT 中心

如果决定从基于 IoT Central 的解决方案迁移到基于 IoT 中心的解决方案,则需要更改当前连接到应用程序的所有设备的配置。 IoTC 迁移程序工具会自动执行此设备迁移过程。

迁移程序工具:

  • 在 IoT 中心为当前连接到 IoT Central 应用程序的设备创建设备注册。
  • 使用命令将与 IoT 中心关联的设备预配服务 (DPS) 实例的 ID 范围发送到设备。

该工具要求连接的设备实现在 IoT Central 应用程序中的设备模板中定义的 DeviceMove 命令。 命令有效负载是目标 DPS 实例的 ID 范围。 设备收到此命令时,它应:

  • 停止发送遥测数据并断开与 IoT Central 应用程序的连接。
  • 使用命令有效负载中的新 ID 范围为自身预配 DPS。
  • 使用预配结果连接到目标 IoT 中心,然后再次开始发送遥测数据。

提示

还可以使用迁移程序工具在 IoT Cental 应用程序之间迁移设备,也可以将设备从 IoT 中心迁移到 IoT Central 应用程序。

最大程度地减少中断

为了最大程度地减少中断,可以分阶段迁移设备。 迁移器工具使用设备组将设备从 IoT Central 迁移到 IoT 中心。 将设备群划分为多个设备组,例如“德克萨斯州的设备”、“纽约的设备”以及“美国其余地区的设备”。 然后独立迁移每个设备组。

警告

你无法将未分配的设备添加到设备组。 因此,你当前无法使用迁移器工具迁移未分配的设备。

通过执行以下步骤最大程度地降低业务影响:

  • 创建 PaaS 解决方案,并将其与 IoT Central 应用程序并行运行。

  • 在 IoT Central 应用程序中设置连续数据导出,并设置与 PaaS 解决方案 IoT 中心之间的适当路由。 转换这两个数据通道,并将数据存储到同一个数据湖中。

  • 分阶段迁移设备,并在每个阶段进行验证。 如果某些事宜未按计划进行,请将设备故障回复到 IoT Central。

  • 将所有设备迁移到 PaaS 解决方案并从 IoT Central 完全导出数据后,便可以从 IoT Central 解决方案中删除设备了。

迁移后,设备不会自动从 IoT Central 应用程序中删除。 将会按照应用程序中所有预配设备的 IoT Central 费用对这些设备继续计费。 从 IoT Central 应用程序中删除这些设备后,你无需再为这些设备付费。 最后,删除 IoT Central 应用程序。

将现有数据从 IoT Central 移出

可以配置 IoT Central 以连续导出遥测和属性值。 导出目标为数据存储,例如 Azure Data Lake、事件中心和 Webhook。 可以使用 IoT Central UI 或 REST API 导出设备模板。 通过 REST API,可以导出 IoT Central 应用程序中的用户。

先决条件

若要完成设备迁移步骤,需要具备以下先决条件:

设备要求

要迁移的设备必须在名为“migration”的组件中实现“DeviceMove”命令。 命令有效负载包含目标 DPS 实例的 ID 范围。 迁移程序工具存储库包含一个示例 DTDL 组件模型,它定义了 DeviceMove 命令。 可以将此组件添加到现有的设备模板中。

该工具假定组件名称为 migration,接口 ID 为 dtmi:azureiot:DeviceMigration;1

Screenshot that highlights the component name and interface ID.

工具存储库还包括示例代码,展示设备应如何实现 DeviceMove 命令。

工具设置

完成以下设置任务以准备迁移:

Microsoft Entra 应用程序

迁移程序工具需要 Microsoft Entra 应用程序注册,才能使用 Azure 订阅进行身份验证:

  1. 导航到“Azure 门户”>“Microsoft Entra ID”>“应用注册”

  2. 选择“新建注册”。

  3. 输入名称,例如“IoTC 迁移程序应用”。

  4. 选择“任何组织目录中的帐户(任何 Microsoft Entra 目录 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)”。

  5. 选择“单页应用程序(SPA)”。

  6. 输入 http://localhost:3000 作为重定向 URI。 稍后将此值添加到迁移程序应用配置。

  7. 选择“注册” 。

  8. 记下“应用程序(客户端) ID”和“目录(租户) ID”的值。 稍后可以使用这些值来配置迁移程序应用:

    Screenshot that shows the Microsoft Entra application in the Azure portal.

  9. 导航到注册中的“清单”页,并将 requiredResourceAccess 的内容替换为以下配置:

    [
      {
        "resourceAppId": "9edfcdd9-0bc5-4bd4-b287-c3afc716aac7",
        "resourceAccess": [
          {
            "id": "73792908-5709-46da-9a68-098589599db6",
            "type": "Scope"
          }
        ]
      },
      {
        "resourceAppId": "797f4846-ba00-4fd7-ba43-dac1f8f63013",
        "resourceAccess": [
          {
            "id": "41094075-9dad-400e-a0bd-54e686782033",
            "type": "Scope"
          }
        ]
      },
      {
        "resourceAppId": "00000003-0000-0000-c000-000000000000",
        "resourceAccess": [
          {
            "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
            "type": "Scope"
          }
        ]
      }
    ]
    
  10. 保存更改。

将设备密钥添加到 DPS

将 IoT Central 应用程序的共享访问签名密钥或 X.509 证书添加到 DPS 分配组。

如果设备使用共享访问签名向 IoT Central 应用程序进行身份验证:

  • 在 IoT Central 应用程序中,导航到“权限”>“设备连接组”。
  • 选择设备使用的注册组。
  • 记下主密钥和辅助密钥。
  • 在 Azure 门户中,导航到你的 DPS 实例。
  • 选择“管理注册”。
  • 创建新的注册并将证明类型设置为“对称密钥”,取消选择“自动生成密钥”,然后添加记下的主密钥和辅助密钥。
  • 选择“保存”。

如果设备使用 X.509 证书向 IoT Central 应用程序进行身份验证:

  • 在 Azure 门户中,导航到你的 DPS 实例。
  • 选择“证书”,然后选择“添加”。
  • 上传并验证在 IoT Central 应用程序中使用的根证书或中间 X.509 证书。
  • 选择“管理注册”。
  • 创建新的注册并将证明类型设置为“证书”,然后选择上传的主证书和辅助证书。
  • 选择“保存”。

下载并配置迁移程序工具

将迁移程序工具的副本下载或克隆到本地计算机:

git clone https://github.com/Azure/iotc-migrator.git

在下载的存储库的根目录中,创建 .env 文件。 使用之前创建的 Microsoft Entra 应用程序注册中的值更新 REACT_APP_AAD_APP_CLIENT_IDREACT_APP_AAD_APP_TENANT_IDREACT_APP_AAD_APP_REDIRECT_URI 值。 保存更改:

PORT=3000
REACT_APP_AAD_APP_CLIENT_ID=<your-AAD-Application-(client)-ID>
REACT_APP_AAD_APP_TENANT_ID=<your-AAD-Directory-(tenant)-ID>
REACT_APP_AAD_APP_REDIRECT_URI=http://localhost:3000

提示

确保 REACT_APP_AAD_APP_REDIRECT_URI 与 Microsoft Entra 应用程序注册中使用的重定向 URI 匹配。

在命令行环境中,导航到 iotc-migrator 存储库的根目录。 然后,运行以下命令,安装所需的 node.js 包并运行该工具:

npm install
npm start

迁移程序应用启动后,导航到 http://localhost:3000 查看该工具。 出现提示时登录。

迁移设备

使用工具批量迁移设备。 在“新建迁移”页上,输入迁移详细信息:

  1. 输入迁移的名称。
  2. 从 IoT Central 应用程序选择设备组。
  3. 选择包含 DeviceMove 命令定义的设备模板。
  4. 选择“移动到自己的 Azure IoT 中心”。
  5. 选择链接到目标 IoT 中心的 DPS 实例。
  6. 选择“迁移”。 该工具会提示将密钥从 IoT Central 应用程序复制到 DPS 注册组。 你之前在将设备密钥添加到 DPS 步骤中完成了此步骤。

Screenshot of migration tool that shows the migration definition.

该工具现在注册与目标 IoT 中心的目标设备筛选器匹配的所有已连接设备。 然后,该工具会在 IoT Central 应用程序中创建一个作业,以在所有这些设备上调用 DeviceMove 方法。 命令有效负载包含目标 DPS 实例的 ID 范围。

验证迁移

使用迁移程序工具中的“迁移状态”页监视进度:

Screenshot that shows the migration status page in the tool.

在“迁移状态”页上选择一个作业,以在 IoT Central 应用程序中查看作业状态。 使用此页查看作业中各个设备的状态:

Screenshot showing completed migration status for IoT Central job.

成功迁移的设备:

  • 在 IoT Central 应用程序中的设备页上显示为“断开连接”。

  • 在 IoT 中心显示为“已注册”和“已预配”:

    Screenshot of IoT Hub in the Azure portal that shows the provisioned devices.

  • 现在正在将遥测数据发送到 IoT 中心

    Screenshot of IoT Hub in the Azure portal that shows telemetry metrics for the migrated devices.