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

Azure Device Update for IoT Hub 导入清单架构

将更新导入 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 。 不允许使用其他属性。

步骤可以是需要执行的代码,也可以是其他更新的指针。 如果未提供任何值,则步骤对象默认inlinetype为。

财产 类型 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:2microsoft/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-AduFileHashesAduUpdate.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"
}