Azure portal を使用した大規模な IoT Edge モジュールの展開Deploy IoT Edge modules at scale using the Azure portal

Azure portal で IoT Edge の自動展開を作成して、多数のデバイスの進行中のデプロイを一度に管理します。Create an IoT Edge automatic deployment in the Azure portal to manage ongoing deployments for many devices at once. IoT Edge の自動展開は、IoT Hub の自動デバイス管理機能の一部です。Automatic deployments for IoT Edge are part of the automatic device management feature of IoT Hub. デプロイは、複数のモジュールを複数のデバイスにデプロイし、モジュールの状態と正常性を追跡し、必要に応じて変更できる動的プロセスです。Deployments are dynamic processes that enable you to deploy multiple modules to multiple devices, track the status and health of the modules, and make changes when necessary.

詳細については、「1 台のデバイスまたは多数のデバイスを対象とした IoT Edge 自動展開について」を参照してください。For more information, see Understand IoT Edge automatic deployments for single devices or at scale.

タグを使用したデバイスの識別Identify devices using tags

デプロイを作成する前に、影響を与えるデバイスを指定できる必要があります。Before you can create a deployment, you have to be able to specify which devices you want to affect. Azure IoT Edge では、デバイス ツイン内のタグを使用してデバイスを識別します。Azure IoT Edge identifies devices using tags in the device twin. 各デバイスには、対象のソリューションにとって意味のある方法で定義した複数のタグを設定することができます。Each device can have multiple tags that you define in any way that makes sense for your solution.

たとえば、スマート ビルディングのキャンパスを管理する場合は、デバイスに場所、部屋の種類、および環境タグを追加することがあります。For example, if you manage a campus of smart buildings, you might add location, room type, and environment tags to a device:

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

デバイス ツインとタグの詳細については、「IoT Hub のデバイス ツインの理解と使用」を参照してください。For more information about device twins and tags, see Understand and use device twins in IoT Hub.

デプロイの作成Create a deployment

IoT Edge には、シナリオをカスタマイズするために使用できる 2 種類の自動デプロイが用意されています。IoT Edge provides two different types of automatic deployments that you can use to customize your scenario. システム ランタイム モジュールと任意の追加のモジュールおよびルートが含まれている標準デプロイを作成できます。You can create a standard deployment, which includes that system runtime modules and any additional modules and routes. 各デバイスには 1 つのデプロイしか適用できません。Each device can only apply one deployment. または、カスタム モジュールおよびルートのみが含まれている (システム ランタイムはなし) 多層デプロイを作成できます。Or you can create a layered deployment, which only includes custom modules and routes, not the system runtime. デバイスで、標準デプロイの上に多数の多層デプロイを結合できます。Many layered deployments can be combined on a device, on top of a standard deployment. 2 種類の自動デプロイが連携して動作するようすの詳細については、「1 台のデバイスまたは多数のデバイスを対象とした IoT Edge 自動デプロイについて」を参照してください。For more information about how the two types of automatic deployments work together, see Understand IoT Edge automatic deployments for single devices or at scale.

デプロイと多層デプロイを作成するための手順は非常によく似ています。The steps for creating a deployment and a layered deployment are very similar. 違いがある場合は、以降の手順で説明されています。Any differences are called out in the following steps.

  1. Azure portal で、IoT Hub に移動します。In the Azure portal, go to your IoT Hub.
  2. 左側のウィンドウにあるメニューで、 [自動デバイス管理] の下の [IoT Edge] を選択します。On the menu in the left pane, select IoT Edge under Automatic Device Management.
  3. 上部のバーで、 [デプロイの作成] または [Create Layered Deployment] (多層デプロイの作成) を選択します。On the upper bar, select Create Deployment or Create Layered Deployment.

デプロイを作成するには、5 つの手順があります。There are five steps to create a deployment. 次のセクションで、手順ごとに説明します。The following sections walk through each one.

手順 1:名前とラベルStep 1: Name and label

  1. デプロイに一意の名前を付けます。名前は最大 128 文字の英小文字で指定します。Give your deployment a unique name that is up to 128 lowercase letters. スペースや、無効な文字は使用しないでください。& ^ [ ] { } \ | " < > /Avoid spaces and the following invalid characters: & ^ [ ] { } \ | " < > /.
  2. デプロイの追跡に役立つよう、キーと値のペアとしてラベルを追加できます。You can add labels as key-value pairs to help track your deployments. たとえば、HostPlatformLinuxVersion3.0.1 などです。For example, HostPlatform and Linux, or Version and 3.0.1.
  3. [Next: Modules] (次へ: モジュール) を選択して手順 2 に移動します。Select Next: Modules to move to step two.

手順 2:モジュールStep 2: Modules

デプロイには、最大 30 個のモジュールを追加できます。You can add up to 30 modules to a deployment. モジュールを含まないデプロイを作成すると、ターゲット デバイスから現在のモジュールが削除されます。If you create a deployment with no modules, it removes any current modules from the target devices.

デプロイでは、IoT Edge エージェント モジュールと IoT Edge ハブ モジュールの設定を管理できます。In deployments, you can manage the settings for the IoT Edge agent and IoT Edge hub modules. これらの 2 つのランタイム モジュールを構成するには、 [ランタイムの設定] を選択します。Select Runtime Settings to configure the two runtime modules. 多層デプロイでは、これらのランタイム モジュールは含まれていないため、構成できません。In layered deployment, the runtime modules are not included so cannot be configured.

追加できるモジュールは、次の 3 種類です。You can add three types of modules:

  • IoT Edge モジュールIoT Edge Module
  • Marketplace モジュールMarketplace Module
  • Azure Stream Analytics モジュールAzure Stream Analytics Module

IoT Edge モジュールを追加するAdd an IoT Edge module

モジュールとしてカスタム コードを追加する、または Azure のサービス モジュールを手動で追加するには、次の手順を実行します。To add custom code as a module, or to manually add an Azure service module, follow these steps:

  1. ページの [コンテナー レジストリの資格情報] セクションで、このデプロイのモジュール イメージを含むすべてのプライベート コンテナー レジストリの名前と資格情報を指定します。In the Container Registry Credentials section of the page, provide the names and credentials for any private container registries that contain the module images for this deployment. Docker イメージのコンテナー レジストリ資格情報が見つからないと、IoT Edge エージェントは、エラー 500 をレポートします。The IoT Edge Agent will report error 500 if it can't find the container registry credential for a Docker image.
  2. ページの [IoT Edge モジュール] セクションで、 [追加] をクリックします。In the IoT Edge Modules section of the page, click Add.
  3. ドロップダウン メニューから [IoT Edge モジュール] を選択します。Select IoT Edge Module from the drop-down menu.
  4. そのモジュールに [IoT Edge モジュール名] を付けます。Give your module a IoT Edge Module Name.
  5. [イメージの URI] フィールドに、モジュールのコンテナー イメージを入力します。For the Image URI field, enter the container image for your module.
  6. ドロップダウン メニューを使用して、 [再起動ポリシー] を選択します。Use the drop-down menu to select a Restart policy. 次のオプションから選択します。Choose from the following options:
    • [常時] - 何らかの理由でシャットダウンした場合、モジュールは常に再起動します。always - The module always restarts if it shuts down for any reason.
    • [never](再起動しない) - なんらかの理由でシャット ダウンした場合でも、モジュールは再起動されません。never - The module never restarts if it shuts down for any reason.
    • [on-failure](失敗時) - モジュールがクラッシュした場合にモジュールを再起動し、正常にシャットダウンした場合は再起動しません。on-failure - The module restarts if it crashes, but not if it shuts down cleanly.
    • [正常でない場合] - モジュールがクラッシュまたは異常な状態を返したときに再起動します。on-unhealthy - The module restarts if it crashes or returns an unhealthy status. 正常性ステータス関数を実装するかどうかは、各モジュールによって異なります。It's up to each module to implement the health status function.
  7. ドロップダウン メニューを使用してモジュールの [Desired Status](目的の状態) を選択します。Use the drop-down menu to select the Desired Status for the module. 次のオプションから選択します。Choose from the following options:
    • [実行中] - [実行中] は既定のオプションです。running - Running is the default option. モジュールは、展開された後すぐに実行が開始されます。The module will start running immediately after being deployed.
    • [停止] - デプロイされた後、ユーザーまたは別のモジュールによって開始されるまで、モジュールはアイドル状態になります。stopped - After being deployed, the module will remain idle until called upon to start by you or another module.
  8. コンテナーに渡す [Container Create Options](コンテナー作成オプション) を指定します。Specify any Container Create Options that should be passed to the container. 詳細については、Docker の作成に関するページを参照してください。For more information, see docker create.
  9. モジュール ツインにタグまたはその他のプロパティを追加する場合は、 [モジュール ツインの設定] を選択します。Select Module Twin Settings if you want to add tags or other properties to the module twin.
  10. このモジュールの [環境変数] を入力します。Enter Environment Variables for this module. 環境変数は、構成情報をモジュールに提供します。Environment variables provide configuration information to a module.
  11. [追加] を選択して、そのモジュールをデプロイに追加します。Select Add to add your module to the deployment.

Marketplace からモジュールを追加するAdd a module from the Marketplace

Azure Marketplace からモジュールを追加するには、次の手順に従います。To add a module from the Azure Marketplace, follow these steps:

  1. ページの [IoT Edge モジュール] セクションで、 [追加] をクリックします。In the IoT Edge Modules section of the page, click Add.
  2. ドロップダウン メニューから [Marketplace モジュール] を選択します。Select Marketplace Module from the drop-down menu.
  3. [IoT Edge モジュールの Marketplace] ページからモジュールを選択します。Choose a module from the IoT Edge Module Marketplace page. 選択したモジュールは、サブスクリプション、リソース グループ、およびデバイスに対して自動的に構成されます。The module you select is automatically configured for your subscription, resource group, and device. その後、それは IoT Edge モジュールの一覧に表示されます。It then appears in your list of IoT Edge modules. 一部のモジュールでは、追加の構成が必要になることがあります。Some modules may require additional configuration. 詳細については、「Azure Marketplace からモジュールをデプロイする」を参照してください。For more information, see Deploy modules from Azure Marketplace.

Stream Analytics モジュールを追加するAdd a Stream Analytics module

Azure Stream Analytics からモジュールを追加するには、次の手順を実行します。To add a module from Azure Stream Analytics, follow these steps:

  1. ページの [IoT Edge モジュール] セクションで、 [追加] をクリックします。In the IoT Edge Modules section of the page, click Add.
  2. ドロップダウン メニューから [Azure Stream Analytics モジュール] を選択します。Select Azure Stream Analytics module from the drop-down menu.
  3. 右側のウィンドウで、 [サブスクリプション] を選択します。On the right pane, choose your Subscription.
  4. IoT の [エッジ ジョブ] を選択します。Choose your IoT Edge job.
  5. [保存] を選択してデプロイにモジュールを追加します。Select Save to add your module to the deployment.

モジュール設定を構成するConfigure module settings

モジュールをデプロイに追加したら、その名前を選択して [IoT Edge モジュールの更新] ページを開くことができます。After you add a module to a deployment, you can select its name to open the Update IoT Edge Module page. このページでは、モジュール設定、環境変数、作成オプション、およびモジュール ツインを編集できます。On this page, you can edit the module settings, environment variables, create options, and module twin. Marketplace からモジュールを追加した場合は、これらのパラメーターの一部が既に入力されている可能性があります。If you added a module from the marketplace, it may already have some of these parameters filled in.

多層デプロイを作成している場合は、同じデバイスを対象とする他のデプロイに存在するモジュールを構成する可能性があります。If you're creating a layered deployment, you may be configuring a module that exists in other deployments targeting the same devices. 他のバージョンを上書きせずにモジュール ツインを更新するには、 [モジュール ツインの設定] タブを開きます。モジュール ツインの必要なプロパティ内のサブセクションの一意の名前を持つ新しい [モジュール ツイン プロパティ] (properties.desired.settings など) を作成します。To update the module twin without overwriting other versions, open the Module Twin Settings tab. Create a new Module Twin Property with a unique name for a subsection within the module twin's desired properties, for example properties.desired.settings. properties.desired フィールド内だけでプロパティを定義した場合は、それによって、優先順位の低いすべてのデプロイで定義されたモジュールの必要なプロパティが上書きされます。If you define properties within just the properties.desired field, it will overwrite the desired properties for the module defined in any lower priority deployments.

多層デプロイのモジュール ツイン プロパティを設定する

多層デプロイでのモジュール ツインの構成の詳細については、多層デプロイに関するページを参照してください。For more information about module twin configuration in layered deployments, see Layered deployment.

デプロイのすべてのモジュールが構成されたら、 [Next: Routes] (次へ: ルート) を選択して手順 3 に移動します。Once you have all the modules for a deployment configured, select Next: Routes to move to step three.

手順 3:ルートStep 3: Routes

ルートは、デプロイ内のモジュール間の通信方法を定義します。Routes define how modules communicate with each other within a deployment. 既定では、ウィザードでは FROM /messages/* INTO $upstream として定義された upstream という名前のルートが割り当てられます。つまり、すべてのモジュールによって出力されたメッセージはすべて IoT ハブに送信されます。By default the wizard gives you a route called upstream and defined as FROM /messages/* INTO $upstream, which means that any messages output by any modules are sent to your IoT hub.

ルートの宣言の情報を使用してルートを追加または更新し、 [次へ] を選択して確認のセクションに進みます。Add or update the routes with information from Declare routes, then select Next to continue to the review section.

[Next: Metrics] (次へ: メトリック) を選択します。Select Next: Metrics.

手順 4:メトリックStep 4: Metrics

メトリックは、構成のコンテンツを適用した結果としてデバイスから報告される、各種の状態の集計カウントを示すものです。Metrics provide summary counts of the various states that a device may report back as a result of applying configuration content.

  1. [メトリック名] に名前を入力しますEnter a name for Metric Name.

  2. [メトリックの条件] にクエリを入力します。Enter a query for Metric Criteria. そのクエリは、IoT Edge ハブ モジュール ツインで報告されるプロパティに基づいています。The query is based on IoT Edge hub module twin reported properties. メトリックは、クエリによって返された行の数を表します。The metric represents the number of rows returned by the query.

    次に例を示します。For example:

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

[Next: Target Devices] (次へ: ターゲット デバイス) を選択します。Select Next: Target Devices.

手順 5:ターゲット デバイスStep 5: Target devices

このデプロイの対象となるデバイスを、デバイスからのタグ プロパティを使用して指定します。Use the tags property from your devices to target the specific devices that should receive this deployment.

同じデバイスが複数のデプロイの対象となっている場合があるため、各デプロイに優先順位番号を付ける必要があります。Since multiple deployments may target the same device, you should give each deployment a priority number. 競合した場合は、最も優先度が高いデプロイが優先されます (値が大きい方が優先度が高いことを示します)。If there's ever a conflict, the deployment with the highest priority (larger values indicate higher priority) wins. 2 つのデプロイの優先度が同じ場合は、作成された時期が最近のデプロイが優先されます。If two deployments have the same priority number, the one that was created most recently wins.

複数のデプロイが同じデバイスをターゲットにしている場合は、優先順位の高いものだけが適用されます。If multiple deployments target the same device, then only the one with the higher priority is applied. 複数の多層デプロイが同じデバイスをターゲットにしている場合、それらはすべて適用されます。If multiple layered deployments target the same device then they are all applied. ただし、いずれかのプロパティが複製されている場合 (同じ名前のルートが 2 つ存在する場合など) は、優先順位の高い多層デプロイのもので残りが上書きされます。However, if any properties are duplicated, like if there are two routes with the same name, then the one from the higher priority layered deployment overwrites the rest.

デバイスをターゲットにする多層デプロイが適用されるようにするには、そのデプロイの優先順位を基本デプロイより高くする必要があります。Any layered deployment targeting a device must have a higher priority than the base deployment in order to be applied.

  1. デプロイの [優先度] を正の整数で入力します。Enter a positive integer for the deployment Priority.
  2. どのデバイスがこのデプロイの対象となるかを指定する [Target condition](対象の条件) を入力します。Enter a Target condition to determine which devices will be targeted with this deployment. 条件は、デバイス ツイン タグか、デバイス ツインから報告されるプロパティに基づいて指定し、式の形式に一致させる必要があります。 The condition is based on device twin tags or device twin reported properties and should match the expression format. たとえば、tags.environment='test' または properties.reported.devicemodel='4000x' です。 For example, tags.environment='test' or properties.reported.devicemodel='4000x'.

[次へ: レビューと作成] を選択して最後の手順に移動します。Select Next: Review + Create to move on to the final step.

手順 6:[Review and create] (確認および作成)Step 6: Review and create

デプロイ情報を確認してから、 [作成] を選択します。Review your deployment information, then select Create.

デプロイを監視するには、「IoT Edge デプロイの監視」を参照してください。To monitor your deployment, see Monitor IoT Edge deployments.

デプロイの変更Modify a deployment

デプロイを変更すると、変更はすべての対象デバイスにただちにレプリケートされます。When you modify a deployment, the changes immediately replicate to all targeted devices. 既存のデプロイに対して次の設定および機能を変更できます。You can modify the following settings and features for an existing deployment:

  • ターゲットの条件Target conditions
  • カスタム メトリックCustom metrics
  • ラベルLabels
  • TagsTags
  • 必要なプロパティDesired properties

ターゲットの条件、カスタム メトリック、およびラベルを変更するModify target conditions, custom metrics, and labels

  1. IoT ハブで、左ペインのメニューの [IoT Edge] を選択します。In your IoT hub, select IoT Edge from the left pane menu.

  2. [IoT Edge デプロイ] タブを選択し、構成するデプロイを選択します。Select the IoT Edge deployments tab and then select the deployment you want to configure.

  3. [ターゲットの条件] タブを選択します。目的のデバイスをターゲットとするように [ターゲットの条件] を変更します。Select the Target Condition tab. Change the Target Condition to target the intended devices. [優先順位] を調整することもできます。You can also adjust the Priority. [保存] を選択します。Select Save.

    対象の条件を更新すると、次の更新が実行されます。If you update the target condition, the following updates occur:

    • デバイスが古い対象条件を満たさないが、新しい対象条件を満たしており、このデプロイのそのデバイスに対する優先度が最も高い場合は、このデプロイは、このデバイスに適用されます。If a device didn't meet the old target condition, but meets the new target condition and this deployment is the highest priority for that device, then this deployment is applied to the device.
    • このデプロイを現在実行しているデバイスが対象条件を満たさなくなった場合、このデプロイはアンインストールされ、次に優先度の高いデプロイが適用されます。If a device currently running this deployment no longer meets the target condition, it uninstalls this deployment and takes on the next highest priority deployment.
    • このデプロイを現在実行しているデバイスが対象条件を満たさなくなり、他のデプロイの対象条件を満たさない場合は、デバイスではなにも変更されません。If a device currently running this deployment no longer meets the target condition and doesn't meet the target condition of any other deployments, then no change occurs on the device. デバイスは現在の状態で現在のモジュールを実行し続けますが、このデプロイの一部としては管理されなくなります。The device continues running its current modules in their current state, but is not managed as part of this deployment anymore. デバイスが他のデプロイの対象の条件を満たすと、このデプロイはアンインストールされ、新しいデプロイが適用されます。Once it meets the target condition of any other deployment, it uninstalls this deployment and takes on the new one.
  4. [メトリック] タブを選択し、 [メトリックの編集] ボタンをクリックします。Select the Metrics tab and click the Edit Metrics button. 構文の例をガイドとして使用して、カスタム メトリックを追加または変更します。Add or modify custom metrics, using the example syntax as a guide. [保存] を選択します。Select Save.

    デプロイ内のカスタム メトリックを編集する

  5. [ラベル] タブを選択して必要な変更を行い、 [保存] を選択します。Select the Labels tab and make any desired changes and select Save.

デプロイの削除Delete a deployment

デプロイを削除すると、デプロイされたデバイスは、次に優先順位の高いデプロイを受け入れます。When you delete a deployment, any deployed devices take on their next highest priority deployment. デバイスが他のいずれのデプロイの対象条件も満たさない場合、デプロイが削除されても、モジュールは削除されません。If your devices don't meet the target condition of any other deployment, then the modules are not removed when the deployment is deleted.

  1. Azure portal にサインインし、IoT Hub に移動します。Sign in to the Azure portal and navigate to your IoT Hub.

  2. [IoT Edge] を選択します。Select IoT Edge.

  3. [IoT Edge デプロイ] タブを選択します。Select the IoT Edge Deployments tab.

    IoT Edge デプロイの表示

  4. チェックボックスを使用して、削除するデプロイを選択します。Use the checkbox to select the deployment that you want to delete.

  5. [削除] を選択します。Select Delete.

  6. この操作によりこのデプロイが削除され、すべてのデバイスが以前の状態に戻されることを警告する、プロンプトが表示されます。A prompt will inform you that this action will delete this deployment and revert to the previous state for all devices. 優先度の低いデプロイが適用されます。 A deployment with a lower priority will apply. 対象となっているデプロイがない場合は、モジュールは削除されません。 If no other deployment is targeted, no modules will be removed. デバイスからすべてのモジュールを削除するには、モジュールがまったく指定されてないデプロイを作成し、それを同じデバイスにデプロイします。If you want to remove all modules from your device, create a deployment with zero modules and deploy it to the same devices.  [はい] を選択して続行します。 Select Yes to continue.

次のステップNext steps

IoT Edge デバイスへのモジュールのデプロイの詳細について学習します。Learn more about Deploying modules to IoT Edge devices.