適用於 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
只會由裝置更新服務使用 ,且與裝置上的軟體元件身分識別不同。
相容性
[相容性] 區段使用一或多個任意索引鍵/值組來定義可安裝更新的裝置。 只有報告符合相容性值的屬性的裝置才有資格部署更新。 您可以藉由包含一組以上的裝置相容性屬性,讓更新與多個裝置類別相容。
下列範例顯示只能部署至將 Contoso 和 Toaster 回報為其裝置製造商和型號的裝置的更新。
{
"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"
}
}
]
}
}
檔案
匯入指令清單的 [ 檔案 ] 區段包含更新承載檔案元資料,例如 name
、 size
和 hash
。 裝置更新會在匯入程式期間使用此元數據進行完整性驗證,並在安裝之前,將相同的資訊轉送至裝置代理程序進行完整性驗證。
注意
只包含參考步驟的父更新不會定義任何更新承載檔案。
建立匯入資訊清單
雖然您可以使用文本編輯器手動撰寫匯入指令清單 JSON,但 Azure CLI 可以大幅簡化程式。 當您準備好嘗試建立匯入資訊清單時,您可以使用操作指南。
重要
若要透過 Azure 入口網站 匯入裝置更新服務,匯入指令清單 JSON 檔名必須以.importmanifest.json結尾。
提示
當您建立匯入指令清單時,您可以使用 Visual Studio Code 來啟用自動完成和 JSON 架構驗證。
更新匯入限制
每個 IoT 中樞裝置更新執行個體都會強制執行某些限制。 如果您尚未檢閱這些限制,請參閱裝置更新限制。