你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如果决定从基于 IoT Central 的解决方案迁移到基于 IoT 中心的解决方案,则需要更改当前连接到应用程序的所有设备的配置。 IoTC 迁移程序工具自动执行此设备迁移过程。
迁移工具
- 在 IoT 中心为当前连接到 IoT Central 应用程序的设备创建设备注册。
- 使用命令将与 IoT 中心关联的设备预配服务(DPS)实例的 ID 范围 发送到设备。
该工具要求连接的设备实现 IoT Central 应用程序中设备模板中定义的 DeviceMove 命令。 命令有效负载是目标 DPS 实例的 ID 范围。 当设备收到此命令时,它应:
- 停止发送遥测数据并断开与 IoT Central 应用程序的连接。
- 使用命令有效负载中的新 ID 范围为自身预配 DPS。
- 使用预配结果连接到目标 IoT 中心,并开始再次发送遥测数据。
小窍门
还可以使用迁移工具在 IoT Central 应用程序之间迁移设备,或从 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 应用程序中导出用户。
先决条件
需要满足以下先决条件才能完成设备迁移步骤:
- 当前设备连接的 IoT Central 源应用程序。
- 您想要将设备移动到的目标 IoT 中心。 此 IoT 中心必须链接到 DPS 实例。
- node.js 和 npm 安装在运行迁移程序工具的本地计算机上。
设备要求
要迁移的设备必须在名为迁移的组件中实现 DeviceMove 命令。 命令有效负载包含目标 DPS 实例的 ID 范围 。 迁移程序工具存储库包含定义 DeviceMove 命令的示例 DTDL 组件模型。 可以将此组件添加到现有设备模板。
该工具假定组件名称为 migration ,接口 ID 为 dtmi:azureiot:DeviceMigration;1:
工具存储库还包括 示例代码 ,其中显示了设备应如何实现 DeviceMove 命令。
工具设置
完成以下设置任务以准备迁移:
Microsoft Entra 应用程序
迁移工具需要Microsoft Entra应用注册,以便能够对Azure订阅进行身份验证。
选择 “新建注册”。
输入名称,例如“IoTC 迁移器应用”。
选择任何组织目录中的帐户(任何 Microsoft Entra 目录 - 多租户)以及个人 Microsoft 帐户(例如 Skype、Xbox)。
选择“单页应用程序”(SPA)。
输入
http://localhost:3000为重定向 URI。 稍后将此值添加到迁移程序应用配置。选择“注册”。
记下 应用程序(客户端)ID 和 目录(租户)ID 值。 稍后将使用这些值来配置迁移程序应用:
导航到注册中的Manifest页面,并根据以下配置替换
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" } ] } ]保存更改。
将设备密钥添加到 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_ID、REACT_APP_AAD_APP_TENANT_ID 和 REACT_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 来查看工具。 出现提示时登录。
迁移设备
使用该工具批量迁移设备。 在 “新建迁移 ”页上输入迁移详细信息:
- 输入迁移的名称。
- 从 IoT Central 应用程序选择设备组。
- 选择包含 DeviceMove 命令定义的设备模板。
- 选择 “移动到自己的 Azure IoT 中心”。
- 选择链接到目标 IoT 中心的 DPS 实例。
- 选择“迁移”。 该工具会提示将密钥从 IoT Central 应用程序复制到 DPS 注册组。 之前在 “将设备密钥添加到 DPS ”步骤中完成了此步骤。
该工具现在注册与目标 IoT 中心的目标设备筛选器匹配的所有已连接设备。 然后,该工具会在 IoT Central 应用程序中创建一个作业,以在所有设备上调用 DeviceMove 方法。 命令有效负载包含目标 DPS 实例的 ID 范围。
验证迁移
使用迁移程序工具中的 “迁移状态 ”页监视进度:
在 “迁移状态 ”页上选择一个作业,以查看 IoT Central 应用程序中的 作业状态 。 使用此页可以查看作业中各个设备的状态:
成功迁移的设备: