次の方法で共有


Azure Device Update for IoT Hub インポートの概念

Azure Device Update for IoT Hub を使用して更新プログラムをデバイスにデプロイするには、まず、更新プログラムを Device Update サービスにインポートします。このサービスにより、インポートされた更新プログラムが格納され、デバイスにデプロイされます。 この記事は、更新プログラムをインポートするときに理解しておくべき重要な概念の概要を示します。

インポート マニフェスト

インポート マニフェストは、インポートする更新プログラムに関する重要な情報を定義する 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"
}

インポート マニフェスト ファイルのセクションは、以下で説明するように、Device Update の重要な概念を表しています。 完全なインポート マニフェスト スキーマの詳細については、マニフェスト JSON スキーマのインポートに関するページを参照してください。

更新プログラム ID

更新プログラム ID (updateId) は、Device Update での更新プログラムの一意の識別子であり、次のプロパティが含まれています。

  • プロバイダーは、更新プログラムを作成または担当するエンティティです。 プロバイダーは通常、会社名です。
  • 名前は、更新プログラム クラスの識別子です。 名前は通常、デバイス クラスまたはモデル名です。
  • バージョンは、同じプロバイダーと名前を持つ他の更新プログラムとこの更新プログラムを区別するための番号です。

次に例を示します。

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

Note

updateId は Device Update サービスによってのみ使用され、デバイス上のソフトウェア コンポーネントの ID とは異なります。

互換性

互換性 (compatibility) セクションは、1 つ以上の任意のキーと値のペアを使用して、更新プログラムをインストールできるデバイスを定義します。 互換性の値と一致するプロパティを報告するデバイスのみが、更新プログラムをデプロイできます。 更新プログラムに複数のデバイス クラスとの互換性を持たせるには、複数のセットのデバイス互換性プロパティを含めます。

次の例は、デバイスの製造元とモデルとして ContosoToaster を報告するデバイスにのみデプロイできる更新プログラムを示しています。

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

手順

命令 (instructions) セクションには、デバイス エージェントが更新プログラムをインストールするために必要な情報または手順が含まれます。 最も単純な更新プログラムには、デバイス エージェントに登録されたハンドラーを使用して更新プログラム ペイロード ファイルを実行する 1 つのインライン ステップが含まれます。 次の例は、単一ステップの命令セクションを示しています。

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

Note

handler プロパティは、インポート マニフェスト バージョン 3.0 以前の updateType プロパティに相当します。

次の例のように、1 つの更新プログラムには複数のステップが含まれる場合があります。

{
  "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"
        ]
      }
    ]
  }
}

1 つの更新プログラムには、独自のインポート マニフェストを使用して別の更新プログラムをインストールするようにデバイス エージェントに指示する "参照" ステップが含まれる場合があり、これにより更新プログラムの親と子の関係が確立されます。 1 つの更新プログラムに、インライン ステップと参照ステップの任意の組み合わせが含まれる場合もあります。

たとえば、Toaster の更新プログラムには、2 つの子の更新プログラムが含まれている場合があります。

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

ファイル

インポート マニフェストのファイル (Files) セクションには、namesizehash などの更新プログラム ペイロード ファイル メタデータが含まれています。 Device Update は、インポート プロセス中にこのメタデータを整合性検証に使用し、インストール前に整合性検証のために同じ情報をデバイス エージェントに転送します。

Note

参照ステップのみを含む親の更新プログラムは、更新プログラムのペイロード ファイルを定義しません。

インポート マニフェストを作成する

テキスト エディターを使用してインポート マニフェスト JSON を手動で作成することもできますが、Azure CLI を使用すると、このプロセスが大幅に簡略化されます。 インポート マニフェストを作成する準備ができたら、こちらのハウツー ガイドを使用できます。

重要

Azure portal を使用して Device Update サービスにインポートするには、インポート マニフェスト JSON ファイルの名前が .importmanifest.json で終わる必要があります。

ヒント

インポート マニフェストを作成するときにオートコンプリートと JSON スキーマの検証を有効にするには、Visual Studio Code を使用します。

更新プログラムのインポートの制限

各 Device Update for IoT Hub インスタンスには、一定の制約が適用されます。 まだ確認していない場合は、Device Update の制約に関するページを参照してください。