共用方式為


適用於 IoT 中樞 匯入概念的 Azure 裝置更新

若要使用適用於 IoT 中樞 的 Azure 裝置更新將更新部署到裝置,請先將更新匯入裝置更新服務,以儲存匯入的更新,並將其部署至裝置。 本文會概述一些關於匯入更新所需要了解的重要概念。

匯入資訊清單

匯入指令清單是 JSON 檔案,可定義您要匯入之更新的重要資訊。 您可以提交匯入指令清單和相關聯的更新檔案或檔案,例如韌體更新套件,作為匯入程式的一部分。 匯入指令清單中定義的元數據是用來內嵌更新。 有些元數據也會在部署期間使用,例如驗證是否已正確安裝更新。

下列 JSON 程式代碼顯示匯入指令清單檔案的範例:

{
  "updateId": {
    "provider": "Contoso",
    "name": "Toaster",
    "version": "1.0"
  },
  "isDeployable": false,
  "compatibility": [
    {
      "manufacturer": "Contoso",
      "model": "Toaster"
    }
  ],
  "instructions": {
    "steps": [
      {
        "handler": "microsoft/swupdate:2",
        "files": [
          "firmware.swu"
        ],
        "handlerProperties": {
          "installedCriteria": "1.0"
        }
      }
    ]
  },
  "files": [
    {
      "filename": "firmware.swu",
      "sizeInBytes": 7558,
      "hashes": {
        "sha256": "/CD7Sn6fiknWa3NgcFjGlJ+ccA81s1QAXX4oo5GHiFA="
      }
    }
  ],
  "createdDateTime": "2022-01-19T06:23:52.6996916Z",
  "manifestVersion": "5.0"
}

匯入指令清單檔的區段代表重要的裝置更新概念,如下列各節所述。 如需完整匯入指令清單架構的相關信息,請參閱 匯入指令清單 JSON 架構

更新身分識別

更新 身分 識別,或 updateId 是裝置更新中更新的唯一標識符,且包含下列屬性:

  • 提供者 是建立或負責更新的實體。 提供者 通常是公司名稱。
  • 名稱 是更新類別的識別碼。 名稱 通常是裝置類別或型號名稱。
  • Version 是一個數位,可區分此更新與具有相同提供者和名稱的其他人。

例如:

{
  "updateId": {
    "provider": "Contoso",
    "name": "Toaster",
    "version": "1.0"
  }
}

注意

updateId只會由裝置更新服務使用 ,且與裝置上的軟體元件身分識別不同。

相容性

[相容性]段使用一或多個任意索引鍵/值組來定義可安裝更新的裝置。 只有報告符合相容性值的屬性的裝置才有資格部署更新。 您可以藉由包含一組以上的裝置相容性屬性,讓更新與多個裝置類別相容。

下列範例顯示只能部署至將 ContosoToaster 回報為其裝置製造商和型號的裝置的更新。

{
  "compatibility": [
    {
      "manufacturer": "Contoso",
      "model": "Toaster"
    }
  ]
}

指示

[ 指示] 區 段包含裝置代理程式安裝更新所需的資訊或步驟。 最簡單的更新包含單一內嵌步驟,它會使用向裝置代理程式註冊的處理程式來執行更新承載檔案。 下列範例顯示單一步驟指示區段。

{
  "instructions": {
    "steps": [
      {
        "handler": "microsoft/swupdate:2",
        "files": [
          "contoso.toaster.1.0.swu"
        ]
      }
    ]
  }
}

注意

屬性 handler 相當於 updateType 匯入指令清單 3.0 版或更新版本中的屬性。

更新可以包含多個步驟,如下列範例所示:

{
  "instructions": {
    "steps": [
      {
        "description": "pre-install script",
        "handler": "microsoft/script:1",
        "handlerProperties": {
          "arguments": "--pre-install"
        },
        "files": [
          "configure.sh"
        ]
      },
      {
        "description": "firmware package",
        "handler": "microsoft/swupdate:2",
        "files": [
          "contoso.toaster.1.0.swu"
        ]
      }
    ]
  }
}

更新可能包含 參考 步驟,指示裝置代理程式使用自己的匯入指令清單安裝另一個更新,並建立父系和子更新關聯性。 更新可以包含內嵌和參考步驟的任何組合。

例如,toaster 的更新可包含兩個子系更新:

{
  "instructions": {
    "steps": [
      {
        "type": "reference",
        "updateId": {
          "provider": "Contoso",
          "name": "Toaster.HeatingElement",
          "version": "1.0"
        }
      },
      {
        "type": "reference",
        "updateId": {
          "provider": "Contoso",
          "name": "Toaster.Sensors",
          "version": "1.0"
        }
      }
    ]
  }
}

檔案

匯入指令清單的 [ 檔案 ] 區段包含更新承載檔案元資料,例如 namesizehash。 裝置更新會在匯入程式期間使用此元數據進行完整性驗證,並在安裝之前,將相同的資訊轉送至裝置代理程序進行完整性驗證。

注意

只包含參考步驟的父更新不會定義任何更新承載檔案。

建立匯入資訊清單

雖然您可以使用文本編輯器手動撰寫匯入指令清單 JSON,但 Azure CLI 可以大幅簡化程式。 當您準備好嘗試建立匯入資訊清單時,您可以使用操作指南

重要

若要透過 Azure 入口網站 匯入裝置更新服務,匯入指令清單 JSON 檔名必須以.importmanifest.json結尾。

提示

當您建立匯入指令清單時,您可以使用 Visual Studio Code 來啟用自動完成和 JSON 架構驗證。

更新匯入限制

每個 IoT 中樞裝置更新執行個體都會強制執行某些限制。 如果您尚未檢閱這些限制,請參閱裝置更新限制