你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
准备要导入到 Device Update 的更新
本文介绍如何获取新的更新,并通过创建导入清单来准备要导入到 Azure Device Update for IoT Hub 的该更新。
先决条件
为 IoT 中心内的 Device Update 预配了 IoT 设备或模拟器。
Azure Cloud Shell 中用于运行 Azure CLI 命令的 Bash 环境。 选择“启动 Cloud Shell”以打开 Cloud Shell,或选择 Azure 门户顶部工具栏中的 Cloud Shell 图标。
如果愿意,可以在本地运行 Azure CLI 命令:
- 安装 Azure CLI。 运行 az version 以查看已安装的 Azure CLI 版本和依赖库,并运行 az upgrade 以安装最新版本。
- 通过运行 az login 登录到 Azure。
- 在首次使用出现提示时安装
azure-iot
扩展。 为了确保使用最新版本的扩展,请运行az extension update --name azure-iot
。
提示
本文中的 Azure CLI 命令使用反斜杠 \ 字符进行续行,以便更轻松地读取命令参数。 此语法适用于 Bash 环境。 如果在 PowerShell 中运行这些命令,请将每个反斜杠替换为反引号 `,或将其完全删除。
获取设备的更新文件
使用 Device Update 获取更新文件或要部署到设备的文件。 如果已从原始设备制造商 (OEM) 或解决方案集成商购买设备,则该组织很可能会为你提供更新,你无需创建更新文件。 请联系 OEM 或解决方案集成商,了解他们如何提供更新。 如果你的组织已为你的设备创建了软件,则它还会为该软件创建更新。
若要创建更新,请选择基于映像或基于包的更新类型,具体取决于你的方案。
创建基本设备更新导入清单
获取更新文件并熟悉基本 Device Update 导入概念后,请创建一个导入清单来描述更新。 虽然可以使用文本编辑器手动创作 JSON 导入清单,但 Azure CLI az iot du init v5 命令简化了该过程。 有关导入清单架构的详细信息,请参阅 Device Update 导入架构和 API 信息。
az iot du init v5
命令使用以下自变量。 所有均为必填项,但 --file
除外,其派生自 --step
(若未指定)。 --step
和 --file
之间存在位置敏感度。
--update-provider
、--update-name
和--update-version
参数定义updateId
对象,该对象是每个更新的唯一标识符。--compat
兼容性对象是一组名称-值对,用于描述此更新兼容的设备的属性。 只能将一组特定的兼容性属性与一个提供程序和名称组合一起使用。--step
参数指定设备上的更新handler
,例如microsoft/script:1
、microsoft/swupdate:1
或microsoft/apt:1
,以及此更新的关联properties
。 可以多次使用--step
。--file
参数指定更新文件的path
。 可以使用一次或多次--file
。
az iot du update init v5 \
--update-provider <provider> \
--update-name <update name> \
--update-version <update version> \
--compat <property1>=<value> <property2>=<value> \
--step handler=<handler> properties=<JSON-formatted handler properties> \
--file path=<paths and full file names of your update files>
以下 az iot du update init v5
命令显示示例值:
az iot du update init v5 \
--update-provider Microsoft \
--update-name AptUpdate \
--update-version 1.0.0 \
--compat manufacturer=Contoso model=Vacuum \
--step handler=microsoft/script:1 properties='{"installedCriteria": "1.0"}' \
--file path=/my/apt/manifest/file
提示
对于处理程序属性,可能需要转义 JSON 中的某些字符。 例如,如果在 PowerShell 中运行 Azure CLI,请使用 '\'
来转义双引号。
az iot du init v5
命令支持高级方案,包括相关文件功能,可用于定义不同更新文件之间的关系。 有关更多示例和可选参数的完整列表,请参阅 az iot du init v5 命令参考。
创建导入清单并将其另存为 JSON 文件后,可以导入更新。 如果计划使用 Azure 门户进行导入,请确保使用以下格式来命名导入清单:<manifestname>.importmanifest.json。
为代理更新创建高级设备更新导入清单
如果更新更为复杂,如代理更新,则可能需要创建多个导入清单。 对于复杂更新,可以使用 az iot du update init v5
Azure CLI 方法创建父导入清单和一些子导入清单。
替换以下 Azure CLI 命令中的占位符值。 有关可以使用的值的详细信息,请参阅导入架构和 API 信息。 以下示例演示了要部署到设备的三个更新:一个父更新和两个子更新。
az iot du update init v5 \
--update-provider <child_1 update provider> \
--update-name <child_1 update name> \
--update-version <child_1 update version> \
--compat manufacturer=<device manufacturer> model=<device model> \
--step handler=<handler> \
--file path=<paths and full file names of your update files>
az iot du update init v5 \
--update-provider <child_2 update provider> \
--update-name <child_2 update name> \
--update-version <child_2 update version> \
--compat manufacturer=<device manufacturer> model=<device model> \
--step handler=<handler> \
--file path=<paths and full file names of your update files>
az iot du update init v5 \
--update-provider <parent update provider> \
--update-name <parent update name> \
--update-version <parent update version> \
--compat manufacturer=<device manufacturer> model=<device model> \
--step handler=<handler> properties=<any handler properties, JSON-formatted> \
--file path=<paths and full file names of your update files> \
--step updateId.provider=<child_1 update provider> updateId.name=<child_1 update name> updateId.version=<child_1 update version> \
--step updateId.provider=<child_2 update provider> updateId.name=<child_2 update name> updateId.version=<child_2 update version>