次の方法で共有


Azure IoT Edge モジュールについて

対象:IoT Edge 1.5 チェックマーク IoT Edge 1.5

重要

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

Azure IoT Edgeでは、modules を使用して、エッジ デバイスにビジネス ロジックを展開および管理できます。 Azure IoT Edge モジュールは、IoT Edgeによって管理される計算の最小単位です。 Azure Stream Analyticsや独自のソリューション固有のコードなど、Azure サービスを含めることができます。 モジュールを開発、デプロイ、および管理する方法を理解するには、モジュールの 4 つの概念的要素を考えます。

  • モジュール イメージ。モジュールを定義するソフトウェアを含むパッケージです。
  • module インスタンス は、IoT Edge デバイスでモジュール イメージを実行する計算の特定の単位です。 IoT Edge ランタイムは、モジュール インスタンスを開始します。
  • module ID は、セキュリティ資格情報を含む、各モジュール インスタンスを格納して関連付けるIoT Hub情報です。
  • モジュールツインは、IoT Hubが格納するJSONドキュメントであり、モジュールインスタンスの状態情報を含み、メタデータ、構成、および条件を含みます。

モジュール イメージとインスタンス

IoT Edgeモジュール イメージには、IoT Edge ランタイムの管理、セキュリティ、通信機能を利用するアプリケーションが含まれています。 独自のモジュール イメージを開発したり、サポートされている Azure サービス (Azure Stream Analytics など) からエクスポートしたりできます。 クラウドでイメージを管理します。 異なるソリューションで更新、変更、デプロイできます。 たとえば、機械学習を使用して生産ラインの出力を予測するモジュールは、コンピューター ビジョンを使用してドローンを制御するモジュールとは別の画像です。

IoT Edge ランタイムは、デバイス上でモジュール イメージをデプロイして起動するたびに、そのモジュールの新しいインスタンスを作成します。 世界の異なる部分にある 2 つのデバイスで、同じモジュール イメージを使用できます。 ただし、デバイスでモジュールが起動すると、各デバイスには独自のモジュール インスタンスがあります。

図 - クラウド内のモジュール イメージ - デバイス上のモジュール インスタンス

実装では、モジュール イメージはリポジトリ内のコンテナー イメージとして存在し、モジュール インスタンスはデバイス上のコンテナーです。

モジュール ID

IoT Edge ランタイムは、新しいモジュール インスタンスを作成するときに、対応するモジュール ID を割り当てます。 IoT Hubには、モジュール インスタンスのすべてのローカルおよびクラウド通信のアドレス指定とセキュリティ スコープとして機能するモジュール ID が格納されます。

モジュール インスタンスの ID は、デバイスの ID と、ソリューション内のモジュールに割り当てる名前によって異なります。 たとえば、モジュールに insight という名前を付け、Hannover01 というデバイスにデプロイすると、IoT Edge ランタイムによって /devices/Hannover01/modules/insight という名前の対応するモジュール ID が作成されます。

同じデバイスに 1 つのモジュール イメージを複数回デプロイする必要があるシナリオでは、異なる名前でデプロイできます。

図 - デバイス内およびデバイス間でモジュール ID が一意になっている

モジュール ツイン

各モジュール インスタンスには、構成に使用する対応するモジュール ツインがあります。 モジュール ID は、インスタンスとツインをリンクします。

モジュール ツインは、モジュールの情報と構成プロパティを格納する JSON ドキュメントです。 この概念は、IoT Hubの device twin 概念と同じになります。 モジュール ツインの構造は、デバイス ツインと同じです。 両方の種類のツインと対話するための API は同じです。 2 つの唯一の違いは、クライアント SDK をインスタンス化するために使用する ID です。

// Create a ModuleClient object. This ModuleClient will act on behalf of a
// module since it is created with a module's connection string instead
// of a device connection string.
ModuleClient client = new ModuleClient.CreateFromEnvironmentAsync(settings);
await client.OpenAsync();

// Get the module twin
Twin twin = await client.GetTwinAsync();

オフライン機能

Azure IoT Edgeモジュールは、IoT Hubと 1 回同期した後、オフラインで無期限に動作します。 IoT Edgeデバイスでは、このオフライン機能を他の IoT デバイスに拡張することもできます。 詳細については、「IoT Edge デバイス、モジュール、およびダウンストリーム デバイスの拡張オフライン機能の概要を参照してください。

次のステップ