Device Update にインポートする更新プログラムを準備する
この記事では、新しい更新プログラムを取得し、インポート マニフェストを作成して Azure Device Update for IoT Hub にインポートするための準備をする方法について説明します。
前提条件
Device Update 用にプロビジョニングされている、IoT ハブ内の IoT デバイスまたはシミュレーター。
Azure CLI コマンドを実行するための Azure Cloud Shell の Bash 環境。 [Cloud Shell の起動] を選択して Cloud Shell を開くか、Azure portal の上部ツールバーにある Cloud Shell アイコンを選択します。
必要に応じて、Azure CLI コマンドをローカルで実行できます。
- Azure CLI のインストール。 az version を実行して、インストールされている Azure CLI のバージョンと依存ライブラリを確認し、az upgrade を実行して最新バージョンをインストールします。
- az login を実行して Azure にサインインします。
- 初回使用時にメッセージが表示されたら、
azure-iot
拡張機能をインストールします。 最新バージョンの拡張機能を使用していることを確認するには、az extension update --name azure-iot
を実行します。
ヒント
この記事の Azure CLI コマンドでは、行の継続にバックスラッシュ (\) 記号を使用して、コマンド引数を読みやすくします。 この構文は、Bash 環境で機能します。 PowerShell でこれらのコマンドを実行している場合は、各円記号をバックティック (`) に置き換えるか、完全に削除します。
デバイスの更新ファイルを取得する
Device Update を使用して、デバイスに展開する更新ファイルを取得します。 相手先ブランド供給 (OEM) またはソリューション インテグレーターからデバイスを購入した場合、更新プログラム ファイルを作成しなくても、その組織から更新プログラムが提供される可能性があります。 OEM またはソリューション インテグレーターに問い合わせて、更新プログラムの入手方法を確認してください。 ご自分の組織でデバイス用のソフトウェアを作成する場合は、そのソフトウェアの更新プログラムも作成します。
更新プログラムを作成するには、シナリオに応じて、イメージベースまたはパッケージベースの更新プログラムの種類のいずれかを選択します。
基本的な Device Update のインポート マニフェストを作成する
更新ファイルを作成し、基本的な Device Update インポートの概念を理解したら更新プログラムを記述するインポート マニフェストを作成します。 テキスト エディターを使用して JSON インポート マニフェストを手動で作成できますが、Azure CLI の az iot du init v5 コマンドを使用すると、プロセスが簡略化されます。 インポート マニフェスト スキーマの詳細については、Device Update のインポート スキーマと API 情報に関するページを参照してください。
az iot du init v5
コマンドは次の引数を使用します。 指定されていない場合は、--step
から派生する --file
を除き、すべて必須です。 --step
と --file
の間には位置感度があります。
--update-provider
、--update-name
、--update-version
パラメーターは、更新ごとに一意識別子であるupdateId
オブジェクトを定義します。--compat
互換性オブジェクトは、この更新プログラムと互換性のあるデバイスのプロパティを記述する名前と値のペアのセットです。 特定の互換性プロパティのセットは、1 つのプロバイダーと名前の組み合わせでのみ使用できます。--step
パラメーターは、デバイス上の更新プログラムのhandler
(microsoft/script:1
、microsoft/swupdate:1
、microsoft/apt:1
など) と、この更新プログラムに関連付けられているproperties
を指定します。--step
は複数回使用できます。--file
パラメーターは、更新ファイルへのpath
を指定します。--file
を 1 回以上使用できます。
az iot du update init v5 \
--update-provider <provider> \
--update-name <update name> \
--update-version <update version> \
--compat <property1>=<value> <property2>=<value> \
--step handler=<handler> properties=<JSON-formatted handler properties> \
--file path=<paths and full file names of your update files>
次の az iot du update init v5
コマンドは、値の例を示しています。
az iot du update init v5 \
--update-provider Microsoft \
--update-name AptUpdate \
--update-version 1.0.0 \
--compat manufacturer=Contoso model=Vacuum \
--step handler=microsoft/script:1 properties='{"installedCriteria": "1.0"}' \
--file path=/my/apt/manifest/file
ヒント
ハンドラー プロパティでは、JSON の特定の文字をエスケープする必要がある場合があります。 たとえば、PowerShell で Azure CLI を実行している場合は、'\'
を使用して二重引用符をエスケープします。
az iot du init v5
コマンドは、さまざまな更新ファイル間のリレーションシップを定義できる関連ファイル機能など、高度なシナリオをサポートします。 その他の例と省略可能なパラメーターの完全な一覧については、az iot du init v5 コマンド リファレンスを参照してください。
インポート マニフェストを作成して JSON ファイルとして保存したら、更新プログラムをインポートできます。 インポートに Azure portal を使用する場合は、必ずインポート マニフェストに <manifestname>.importmanifest.json という形式で名前を付けてください。
プロキシ更新用の高度な Device Update インポート マニフェストを作成する
プロキシ更新など、更新が複雑な場合は、複数のインポート マニフェストの作成が必要になることがあります。 複雑な更新の場合は、az iot du update init v5
Azure CLI コマンドを使用して、 "親" インポート マニフェストといくつかの "子" インポート マニフェストを作成できます。
次の Azure CLI コマンドのプレースホルダー値を置き換えます。 使用できる値の詳細については、インポートのスキーマと API の情報に関する記事を参照してください。 次の例は、デバイスに展開する 3 つの更新プログラム (1 つの親更新プログラムと 2 つの子更新プログラム) を示しています。
az iot du update init v5 \
--update-provider <child_1 update provider> \
--update-name <child_1 update name> \
--update-version <child_1 update version> \
--compat manufacturer=<device manufacturer> model=<device model> \
--step handler=<handler> \
--file path=<paths and full file names of your update files>
az iot du update init v5 \
--update-provider <child_2 update provider> \
--update-name <child_2 update name> \
--update-version <child_2 update version> \
--compat manufacturer=<device manufacturer> model=<device model> \
--step handler=<handler> \
--file path=<paths and full file names of your update files>
az iot du update init v5 \
--update-provider <parent update provider> \
--update-name <parent update name> \
--update-version <parent update version> \
--compat manufacturer=<device manufacturer> model=<device model> \
--step handler=<handler> properties=<any handler properties, JSON-formatted> \
--file path=<paths and full file names of your update files> \
--step updateId.provider=<child_1 update provider> updateId.name=<child_1 update name> updateId.version=<child_1 update version> \
--step updateId.provider=<child_2 update provider> updateId.name=<child_2 update name> updateId.version=<child_2 update version>