Azure Device Update for IoT Hub に更新プログラムをインポートするときは、更新プログラムに関する重要な情報を定義する、関連付けられた JSON インポート マニフェスト ファイルも送信します。 この記事では、JSON インポート マニフェスト ファイルの作成に使用されるスキーマについて説明します。
インポート マニフェストの概念とファイル構造の詳細については、「 Azure Device Update for IoT Hub インポート マニフェスト」を参照してください。 ファイルの作成方法については、「 Device Update for IoT Hub にインポートする更新プログラムを準備する」を参照してください。
スキーマ
インポートマニフェストの JSON スキーマは SchemaStore.org でホストされ、次のプロパティで構成されています。 その他のプロパティは許可されません。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
$schema | string |
JSON スキーマ リファレンス。 | いいえ |
を にアップデートする | updateId |
一意の更新識別子。 | イエス |
説明 | string |
オプションの更新プログラムの説明。 最大長は 512 文字です。 | いいえ |
互換性 | compatibility |
この更新プログラムと互換性のあるデバイス プロパティ セットの一覧。 | イエス |
指示 | instructions |
インストール手順を更新します。 | イエス |
ファイル |
file
[0-10]
|
更新ペイロード ファイルの一覧。 すべてのファイルサイズの合計が 2 GB を超えることはできません。 すべての命令ステップが参照ステップである場合は、空または null にすることができます。 | いいえ |
manifestVersion の処理を行う | string |
マニフェスト スキーマのバージョンをインポートします。 5.0 である必要があります。 | イエス |
作成日時 | string |
マニフェストの作成日時を ISO 8601 形式 ( "2020-10-02T22:18:04.9446744Z" など) でインポートします。 |
イエス |
オブジェクトの更新
updateID
オブジェクトは、各更新の一意の識別子です。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
供給者 | string |
更新プログラムを作成または直接担当するエンティティ。
プロバイダーには会社名を指定できます。 パターン: ^[a-zA-Z0-9.-]+$ 最大長: 64 文字 |
イエス |
名前 | string |
更新のクラスの識別子。
名前には、デバイス クラス名またはモデル名を指定できます。 パターン: ^[a-zA-Z0-9.-]+$ 最大長: 64 文字 |
イエス |
バージョン | string |
2 から 4 部構成のドット区切りの数値バージョン番号。 各部分は 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 オブジェクト
instructions
オブジェクトには、更新プログラムのインストール手順が表示されます。 instructions オブジェクトには、実行する steps
のリストが含まれています。 その他のプロパティは許可されません。
ステップは、実行するコード、または他の更新へのポインターのいずれかです。 ステップ オブジェクトは、type
値が指定されていない場合、デフォルトで inline
になります。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
ステップ | array[1-10] |
steps 配列の各要素は、インライン ステップ オブジェクトまたは参照ステップ オブジェクトのいずれかである必要があります。 |
イエス |
例えば次が挙げられます。
{
"instructions": {
"steps": [
{
"type": "inline",
...
},
{
"type": "reference",
...
}
]
}
}
インラインステップオブジェクト
inline
ステップオブジェクトは、コードの実行を実行するインストール指示ステップです。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
タイプ | string |
コード実行を実行する命令ステップの種類。
inline である必要があります。 値が指定されていない場合、デフォルトは inline です。 |
いいえ |
説明 | string |
省略可能な命令ステップの説明。 最大長: 64 文字。 | いいえ |
ハンドラー | string |
この手順を実行できるデバイス上のハンドラーの ID。 パターン: ^\S+/\S+:\d{1,5}$ 最小文字数: 5 文字 最大長: 32 文字 例: microsoft/script:1 、microsoft/swupdate:2 、microsoft/apt:1 |
イエス |
ファイル |
string
[1-10]
|
エージェントがハンドラに渡す ファイル・オブジェクト として定義された更新ファイルの名前。 各要素の長さは 1 から 255 文字にする必要があります。 | イエス |
handlerPropertiesをでする | inlineStepHandlerProperties |
エージェントが引数としてハンドラーに渡す JSON オブジェクト。 | いいえ |
その他のプロパティは許可されません。
例えば次が挙げられます。
{
"steps": [
{
"description": "pre-install script",
"handler": "microsoft/script:1",
"handlerProperties": {
"arguments": "--pre-install"
},
"files": [
"configure.sh"
]
}
]
}
参照ステップオブジェクト
reference
ステップオブジェクトは、別の更新プログラムをインストールするためのインストール手順です。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
タイプ | referenceStepType |
別の更新プログラムをインストールする命令ステップの種類。
reference である必要があります。 |
イエス |
説明 | stepDescription |
省略可能な命令ステップの説明。 最大長: 64 文字。 | いいえ |
を にアップデートする | updateId |
一意の更新識別子。 | イエス |
その他のプロパティは許可されません。
例えば次が挙げられます。
{
"steps": [
{
"type": "reference",
"updateId": {
"provider": "Contoso",
"name": "Toaster.HeatingElement",
"version": "1.0"
}
}
]
}
Files オブジェクト
各 files
オブジェクトは、バイナリ、ファームウェア、スクリプト ファイルなどの更新ペイロード ファイルであり、更新プログラム内で一意である必要があります。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
ファイル名 | string |
ペイロード ファイル名を更新します。 最大長: 255 文字 | イエス |
バイト単位のサイズ | number |
ファイル サイズ (バイト数)。 最大サイズ: 2147483648 バイト | イエス |
ハッシュ | fileHashes |
キーとしてアルゴリズム名を持つ Base64 でエンコードされたファイル ハッシュ。 少なくとも SHA-256 アルゴリズムを指定する必要があり、エージェントによってサポートされている場合は、追加のアルゴリズムを指定できます。 ハッシュの計算方法の詳細については、 Hashes オブジェクト を参照してください。 | イエス |
関連ファイル | relatedFile[0-4] |
1 つ以上のプライマリ ペイロード ファイルに関連するファイルのコレクション。 詳細については、 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 アルゴリズムを指定する必要があり、エージェントでサポートされている場合は他のアルゴリズムを指定できます。 ハッシュを正しく計算する方法の例については、AduUpdate.psm1 スクリプトの Get-AduFileHashes
関数を参照してください。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
SHA256 | string |
SHA-256 アルゴリズムを使用した Base64 でエンコードされたファイル ハッシュ値。 | イエス |
その他のプロパティは許可されます。
例えば次が挙げられます。
{
"hashes": {
"sha256": "/CD7Sn6fiknWa3NgcFjGlJ+ccA81s1QAXX4oo5GHiFA="
}
}
relatedFiles オブジェクト
relatedFiles
オブジェクトには、1 つ以上のプライマリ ペイロード ファイルに関連するファイルのコレクションが含まれています。 詳細については、「 関連ファイル機能を使用して複数の更新ファイルを参照する」を参照してください。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
ファイル名 | string |
プライマリペイロードファイルに関連付けられている関連ファイルのリスト。 | イエス |
バイト単位のサイズ | number |
ファイル サイズ (バイト数)。 最大サイズ: 2147483648 バイト。 | イエス |
ハッシュ | fileHashes |
キーとしてアルゴリズム名を持つ Base64 でエンコードされたファイル ハッシュ。 詳細については、「 Hashes オブジェクト」を参照してください。 | イエス |
プロパティ |
relatedFilesProperties
[0-5]
|
最大 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
オブジェクトは、関連ファイルの処理方法を指定します。
プロパティ | タイプ | 説明 | 必須 |
---|---|---|---|
ID | string |
downloadHandler の識別子。 ASCII 文字は 64 文字までです。 |
はい (使用する場合) relatedFiles |
その他のプロパティは許可されません。
例えば次が挙げられます。
"downloadHandler": {
"id": "microsoft/delta:1"
}