你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将更新导入 IoT 中心的 Azure 设备更新时,还会提交关联的 JSON 导入清单文件,该文件定义有关更新的重要信息。 本文介绍用于创建 JSON 导入清单文件的架构。
若要了解有关导入清单概念和文件结构的详细信息,请参阅 适用于 IoT 中心导入清单的 Azure 设备更新。 若要了解如何创建文件,请参阅 准备更新以导入 IoT 中心的设备更新。
图式
导入清单 JSON 架构托管在 SchemaStore.org ,由以下属性组成。 不允许使用其他属性。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
$schema | string |
JSON 架构参考。 | 否 |
updateId | updateId |
唯一的更新标识符。 | 是的 |
说明 | string |
可选更新说明。 最大长度为 512 个字符。 | 否 |
兼容性 | compatibility |
与此更新兼容的设备属性集列表。 | 是的 |
指示 | instructions |
更新安装说明。 | 是的 |
files | file [0-10] |
更新有效负载文件的列表。 所有文件大小的总和不能超过 2 GB。 如果所有指令步骤都是参考步骤,则可为空或 null。 | 否 |
manifestVersion | string |
导入清单架构版本。 必须为 5.0。 | 是的 |
createdDateTime | string |
以 ISO 8601 格式导入清单创建日期和时间,例如 "2020-10-02T22:18:04.9446744Z" 。 |
是的 |
更新对象
该 updateID
对象是每个更新的唯一标识符。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
供应商 | string |
正在创建或直接负责更新的实体。 供应商可以是公司名称。 模式: ^[a-zA-Z0-9.-]+$ 最大长度:64 个字符 |
是的 |
名字 | string |
更新类的标识符。 该名称可以是设备类或模型名称。 模式: ^[a-zA-Z0-9.-]+$ 最大长度:64 个字符 |
是的 |
版本 | string |
两个到四个部分以点分隔的数字版本号。 每个部分必须是介于 0 和 2147483647 之间的数字,并且删除前导零。 模式: ^\d+(?:\.\d+)+$ 示例: "1.0" 、"2021.11.8" |
是的 |
不允许使用其他属性。
例如:
{
"updateId": {
"provider": "Contoso",
"name": "Toaster",
"version": "1.0"
}
}
兼容性对象
该 compatibility
对象描述此更新与该设备兼容的 1-5 个属性。 每个属性都是一个 string
类型名称/值对。 名称长度必须为 1-32 个字符,该值必须为 1-64 个字符。 不能将同一组完全相同的兼容性属性与多个更新提供程序和名称组合一起使用。
例如:
{
"compatibility": [
{
"manufacturer": "Contoso",
"model": "Toaster"
}
]
}
指令对象
该 instructions
对象提供更新安装说明。 指令对象包含要执行的列表 steps
。 不允许使用其他属性。
步骤可以是需要执行的代码,也可以是其他更新的指针。 如果未提供任何值,则步骤对象默认inline
type
为。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
步骤 | array[1-10] |
数组中的每个 steps 元素必须是 内联步骤对象 或 引用步骤对象。 |
是的 |
例如:
{
"instructions": {
"steps": [
{
"type": "inline",
...
},
{
"type": "reference",
...
}
]
}
}
Inline step 对象
inline
step 对象是完成代码执行的安装说明步骤。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
类型 | string |
用于代码执行的指令步骤类型。 必须是 inline 。 如果未提供任何值,则默认为inline 。 |
否 |
说明 | string |
可选说明步骤说明。 最大长度:64 个字符。 | 否 |
handler | string |
设备上可执行此步骤的处理程序标识。 模式: ^\S+/\S+:\d{1,5}$ 最小长度:五个字符 最大长度:32 个字符 示例: microsoft/script:1 、、 microsoft/swupdate:2 microsoft/apt:1 |
是的 |
files | string [1-10] |
定义为 files 对象的更新文件的名称,由代理传递给处理程序。 每个元素长度必须为 1-255 个字符。 | 是的 |
handlerProperties | inlineStepHandlerProperties |
由代理传递给处理程序作为参数的 JSON 对象。 | 否 |
不允许使用其他属性。
例如:
{
"steps": [
{
"description": "pre-install script",
"handler": "microsoft/script:1",
"handlerProperties": {
"arguments": "--pre-install"
},
"files": [
"configure.sh"
]
}
]
}
Reference step 对象
reference
step 对象是安装另一个更新的安装说明步骤。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
类型 | referenceStepType |
安装其他更新的说明步骤类型。 必须是 reference 。 |
是的 |
说明 | stepDescription |
可选说明步骤说明。 最大长度:64 个字符。 | 否 |
updateId | updateId |
唯一的更新标识符。 | 是的 |
不允许使用其他属性。
例如:
{
"steps": [
{
"type": "reference",
"updateId": {
"provider": "Contoso",
"name": "Toaster.HeatingElement",
"version": "1.0"
}
}
]
}
Files 对象
每个 files
对象都是更新有效负载文件,如二进制文件、固件文件或脚本文件,必须在更新中是唯一的。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
文件名 | string |
更新载荷文件名。 最大长度:255 个字符 | 是的 |
sizeInBytes | number |
文件大小(以字节数为单位)。 最大大小:2147483648字节 | 是的 |
Hashes | fileHashes |
以算法名称作为键的 Base64 编码文件哈希。 必须至少指定 SHA-256 算法,并且代理支持时可以指定其他算法。 有关如何计算哈希的详细信息,请参阅 Hashes 对象 。 | 是的 |
relatedFiles | relatedFile[0-4] |
与一个或多个主有效负载文件相关的文件集合。 有关详细信息,请参阅 relatedFiles 对象。 | 否 |
downloadHandler | downloadHandler |
指定如何处理任何相关文件。 | 是,如果使用 relatedFiles 。 有关详细信息,请参阅 downloadHandler 对象。 |
不允许使用其他属性。
例如:
{
"files": [
{
"fileName": "full-image-file-name",
"sizeInBytes": 12345,
"hashes": {...},
"relatedFiles": [
{
"fileName": "delta-from-v1-file-name",
"sizeInBytes": 1234,
"hashes": {
"SHA256": "delta-from-v1-file-hash"
},
"properties": {...}
}
],
"downloadHandler": {
"id": "microsoft/delta:1"
}
}
]
}
Hashes 对象
该 hashes
对象包含 base64 编码的文件哈希,其中算法名称为键。 必须至少指定 SHA-256 算法,并且代理支持时可以指定其他算法。 有关如何正确计算哈希的示例,请参阅 Get-AduFileHashes
AduUpdate.psm1 脚本中的函数。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
sha256 | string |
使用 SHA-256 算法的 Base64 编码文件哈希值。 | 是的 |
允许其他属性。
例如:
{
"hashes": {
"sha256": "/CD7Sn6fiknWa3NgcFjGlJ+ccA81s1QAXX4oo5GHiFA="
}
}
relatedFiles 对象
该 relatedFiles
对象包含与一个或多个主有效负载文件相关的文件集合。 有关详细信息,请参阅 使用相关文件功能引用多个更新文件。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
文件名 | string |
与主有效负载文件关联的相关文件列表。 | 是的 |
sizeInBytes | number |
文件大小(以字节数为单位)。 最大大小:2147483648字节。 | 是的 |
Hashes | fileHashes |
以算法名称作为键的 Base64 编码文件哈希。 有关详细信息,请参阅 Hashes 对象。 | 是的 |
属性 | relatedFilesProperties [0-5] |
最多五个键值对,其中键限制为 64 个 ASCII 字符,值为最多 256 个 ASCII 字符的 JObject。 | 否 |
允许其他属性。
例如:
"relatedFiles": [
{
"filename": "in1_in2_deltaupdate.dat",
"sizeInBytes": 102910752,
"hashes": {
"sha256": "2MIldV8LkdKenjJasgTHuYi+apgtNQ9FeL2xsV3ikHY="
},
"properties": {
"microsoft.sourceFileHashAlgorithm": "sha256",
"microsoft.sourceFileHash": "YmFYwnEUddq2nZsBAn5v7gCRKdHx+TUntMz5tLwU+24="
}
}
],
downloadHandler 对象
该 downloadHandler
对象指定如何处理任何相关文件。
财产 | 类型 | DESCRIPTION | 必选 |
---|---|---|---|
id | string |
downloadHandler 的标识符。 限制为 64 个 ASCII 字符。 |
是,如果使用 relatedFiles |
不允许使用其他属性。
例如:
"downloadHandler": {
"id": "microsoft/delta:1"
}