Azure ポータルを使用してIoT Edgeモジュールを大規模にデプロイする

適用対象:IoT Edge 1.6 チェックマーク IoT Edge 1.6

重要

サポートされているリリースはIoT Edge 1.6 LTSです。 IoT Edge 1.5 LTSのサポートは2026年11月10日に終了します。IoT Edge 1.4 LTSは2024年11月12日にサービス終了を迎えました。 以前のリリースを使用している場合は、「Update IoT Edgeを参照してください。

Azure ポータルでIoT Edge自動展開を作成して、多数のデバイスの継続的な展開を一度に管理します。 IoT Edgeの自動デプロイは、IoT Hubの device management 機能の一部です。 デプロイは、複数のモジュールを複数のデバイスにデプロイし、モジュールの状態と正常性を追跡し、必要に応じて変更できる動的プロセスです。

詳細については、単一デバイスまたは大規模展開のIoT Edge自動デプロイメントを理解するを参照してください。

タグを使用したデバイスの識別

デプロイを作成する前に、影響を与えるデバイスを指定できる必要があります。 Azure IoT Edgeは、デバイス ツインで tag を使用してデバイスを識別します。 各デバイスには、対象のソリューションにとって意味のある方法で定義した複数のタグを設定することができます。

たとえば、スマート ビルディングのキャンパスを管理する場合は、デバイスに場所、部屋の種類、および環境タグを追加することがあります。

"tags":{
  "location":{
    "building": "20",
    "floor": "2"
  },
  "roomtype": "conference",
  "environment": "prod"
}

デバイス ツインとタグの詳細については、「 IoT Hubを参照してください。

デプロイの作成

IoT Edgeには、シナリオのカスタマイズに使用できる 2 種類の自動デプロイが用意されています。 標準 のデプロイを作成できます。これには、そのシステム ランタイム モジュールとその他のモジュールとルートが含まれます。 各デバイスには 1 つのデプロイしか適用できません。 または、カスタム モジュールおよびルートのみが含まれている (システム ランタイムはなし) 多層デプロイを作成できます。 デバイスで、標準デプロイの上に多数の多層デプロイを結合できます。 2 種類の自動展開の連携のしくみの詳細については、「単一デバイスまたは大規模な自動展開のIoT Edgeを参照してください。

デプロイと多層デプロイを作成するための手順は似ています。 違いがある場合は、以降の手順で説明されています。

  1. Azure ポータルで、IoT ハブに移動します。
  2. 左側のウィンドウのリソース メニューで、デバイス管理 の下にある Configurations + Deployments を選択します。
  3. コマンド バーで、[ 追加>展開 ] または [ 階層型デプロイ] を選択します。

デプロイを作成するには、5 つの手順があります。 次のセクションで、手順ごとに説明します。

この記事の手順には、IoT Edge エージェントとハブの最新のスキーマ バージョンが反映されています。

バージョン 1.0.9 以前を実行しているデバイスに展開する場合は、ウィザードのモジュール ステップでランタイム設定を編集してスキーマ バージョン 1.0 を使用します。

手順 1: 名前とラベル

  1. デプロイに一意の名前を付けます。名前は最大 128 文字の英小文字で指定します。 スペースや、無効な文字は使用しないでください。& ^ [ ] { } \ | " < > /
  2. デプロイの追跡に役立つよう、キーと値のペアとしてラベルを追加できます。 たとえば、HostPlatformLinuxVersion3.0.1 などです。
  3. [次へ: モジュール] を選択して手順 2 に進みます。

手順 2: モジュール

デプロイには、最大 50 個のモジュールを追加できます。 モジュールを含まないデプロイを作成すると、ターゲット デバイスから現在のモジュールが削除されます。

デプロイでは、IoT Edge エージェントと IoT Edge ハブ モジュールの設定を管理できます。 これらの 2 つのランタイム モジュールを構成するには、[ランタイムの設定] を選択します。 階層型デプロイでは、ランタイム モジュールは含まれていないため、構成できません。

カスタム コードをモジュールとして追加したり、Azure サービス モジュールを手動で追加したりするには、次の手順に従います。

  1. ページの [Container Registry Credentials]\(コンテナー レジストリ 資格情報\) セクションで、モジュール イメージを含むプライベート コンテナー レジストリにアクセスするための資格情報を指定します。

  2. ページの IoT Edge Modules セクションで、Add を選択します。

  3. ドロップダウン メニューから以下のいずれかの種類のモジュールを選択します。

    • IoT Edge Module - モジュール名とコンテナー イメージ URI を指定します。 たとえば、サンプルの SimulatedTemperatureSensor モジュールのイメージ URI は mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.6です。 Microsoft IoT Edge モジュール イメージの一覧については、Microsoft Artifact Registry を参照してください。
    • Azure Stream Analytics Module - Azure Stream Analytics ワークロードから生成されたモジュール。
  4. 必要に応じて、手順 2 と 3 を繰り返して、デプロイにモジュールを追加します。

デプロイにモジュールを追加した後、その名前を選択して Update IoT Edge Module ページを開くことができます。 このページでは、モジュール設定、環境変数、作成オプション、スタートアップ順序、モジュール ツインを編集できます。 マーケットプレースからモジュールを追加した場合、これらのパラメーターの一部が既に入力されている可能性があります。 指定可能なモジュール設定の詳細については、モジュールの構成と管理に関するページを参照してください。

階層展開を作成する場合は、同じデバイスをターゲットとする他のデプロイに存在するモジュールを構成している可能性があります。 他のバージョンを上書きせずにモジュール ツインを更新するには、[モジュール ツインの設定] タブを開きます。モジュール ツインの必要なプロパティ内のサブセクションの一意の名前を持つ新しい [モジュール ツイン プロパティ] (properties.desired.settings など) を作成します。 properties.desired フィールド内だけでプロパティを定義した場合は、それによって、優先順位の低いすべてのデプロイで定義されたモジュールの必要なプロパティが上書きされます。

多層デプロイのモジュール ツイン プロパティを設定する方法を示すスクリーンショット。

多層デプロイでのモジュール ツインの構成の詳細については、多層デプロイに関するページを参照してください。

デプロイのすべてのモジュールが構成されたら、[次へ: ルート] を選択して手順 3 に進みます。

手順 3: ルート

[ ルート ] タブでは、モジュールと IoT ハブの間でメッセージを渡す方法を定義します。 メッセージは、名前と値のペアを使用して作成されます。

たとえば、名前が route、値が FROM /messages/* INTO $upstream のルートでは、あらゆるモジュールから出力されるあらゆるメッセージが取得されて、IoT ハブに送信されます。

priority パラメーターと time to live パラメーターは、ルート定義に含めることができる省略可能なパラメーターです。 priority パラメーターでは、メッセージが最初に処理されるルート、または最後に処理されるルートを選択できます。 優先度は 0 から 9 の数値で設定されます (最高優先度は 0)。 time to live パラメーターでは、メッセージが処理されるかキューから削除されるまで当該ルートに保持しておく期間を宣言できます。

ルートの作成方法の詳細については、「ルートの宣言」をご覧ください。

[次へ: ターゲット デバイス] を選択します。

手順 4: 対象デバイス

この展開を受け取る必要がある特定のデバイスを対象にするには、デバイスから tags プロパティを使用します。

同じデバイスが複数のデプロイの対象となっている場合があるため、各デプロイに優先順位番号を付ける必要があります。 競合した場合は、最も優先度が高いデプロイが優先されます (値が大きい方が優先度が高いことを示します)。 2 つのデプロイの優先度が同じ場合は、作成された時期が最近のデプロイが優先されます。

複数のデプロイが同じデバイスをターゲットにしている場合は、優先順位の高いものだけが適用されます。 複数の階層化されたデプロイが同じデバイスを対象とする場合は、すべて適用されます。 ただし、いずれかのプロパティが複製されている場合 (同じ名前のルートが 2 つ存在する場合など) は、優先順位の高い多層デプロイのもので残りが上書きされます。

デバイスをターゲットにする多層デプロイが適用されるようにするには、そのデプロイの優先順位を基本デプロイより高くする必要があります。

  1. デプロイの[優先度] を正の整数で入力します。
  2. ターゲット条件を入力し、このデプロイのターゲットとなるデバイスを決定します。 条件は、デバイス ツイン タグか、デバイス ツインから報告されるプロパティに基づいて指定し、式の形式に一致させる必要があります。 たとえば、tags.environment='test' または properties.reported.devicemodel='4000x' です。

[次へ: メトリック] を選択します。

手順 5: メトリック

メトリックは、構成コンテンツの適用の結果としてデバイスが報告する可能性があるさまざまな状態の概要カウントを提供します。

  1. メトリック名の名前を入力します。

  2. メトリック条件のクエリを入力します。 このクエリは、IoT Edge ハブ モジュール ツイン レポートされたプロパティに基づいています。 メトリックは、クエリによって返された行の数を表します。

    次に例を示します。

    SELECT deviceId FROM devices
      WHERE properties.reported.lastDesiredStatus.code = 200
    

[次へ: 確認と作成] を選択して、最後の手順に進みます。

手順 6: 確認と作成

デプロイ情報を確認し、[作成] を選択します。

デプロイメントを監視するには、IoT Edge 展開の監視を参照してください。

新しいIoT Edgeデプロイが作成されると、IoT ハブが新しい構成を処理し、新しい必要なプロパティをターゲット デバイスに伝達するまでに最大 5 分かかる場合があります。

デプロイを変更する

デプロイを変更すると、変更はすべての対象デバイスにただちにレプリケートされます。 既存のデプロイに対して次の設定および機能を変更できます。

  • ターゲットの条件
  • カスタム メトリック
  • ラベル
  • タグ
  • 必要なプロパティ

ターゲットの条件、カスタム メトリック、およびラベルを変更する

  1. IoT ハブで、リソース メニューの **[デバイス管理] ** で [ 構成とデプロイ ] を選択します。

  2. 構成するデプロイを選択します。

  3. [ターゲット デバイス] タブを選択します。目的のデバイスをターゲットとするように [ターゲットの条件] を変更します。 [優先順位] を調整することもできます。

    対象の条件を更新すると、次の更新が実行されます。

    • デバイスが古い対象条件を満たさないが、新しい対象条件を満たしており、このデプロイのそのデバイスに対する優先度が最も高い場合は、このデプロイは、このデバイスに適用されます。
    • このデプロイを現在実行しているデバイスが対象条件を満たさなくなった場合、このデプロイはアンインストールされ、次に優先度の高いデプロイが適用されます。
    • このデプロイを現在実行しているデバイスが対象条件を満たさなくなり、他のデプロイの対象条件を満たさない場合は、デバイスではなにも変更されません。 デバイスは現在のモジュールを現在の状態で実行し続けますが、このデプロイの一部として管理されなくなります。 デバイスが他のデプロイの対象の条件を満たすと、このデプロイはアンインストールされ、新しいデプロイが適用されます。
  4. サンプル構文をガイドとして使用して、[ メトリック ] タブを選択し、カスタム メトリックを追加または変更します。 保存を選びます。

    デプロイでカスタム メトリックを編集する方法を示すスクリーンショット。

  5. [ラベル] タブを選択して必要な変更を行い、[保存] を選択します。

デプロイメントの削除

デプロイを削除すると、デプロイされたデバイスは、次に優先順位の高いデプロイを受け入れます。 デバイスが他の展開のターゲット条件を満たしていない場合、デプロイが削除されてもモジュールは削除されません。

  1. Azure ポータル IoT ハブに移動します。
  2. リソース メニューの [デバイス管理] で [構成と展開] を選択します。
  3. チェックボックスを使用して、削除するデプロイを選択します。
  4. コマンド バーから [削除] を 選択します。
  5. この操作によりこのデプロイが削除され、すべてのデバイスが以前の状態に戻されることを警告するプロンプトが表示されます。 優先順位の低いデプロイが適用されます。 対象となっているデプロイがない場合は、モジュールは削除されません。 デバイスからすべてのモジュールを削除するには、モジュールがまったく指定されてないデプロイを作成し、それを同じデバイスにデプロイします。 はいを選択して続行します。

次のステップ

IoT Edge デバイスへのモジュールの展開の詳細については、「単一デバイスまたは大規模な IoT Edge の自動展開の概要」を参照してください。