適用対象: IoT Edge 1.5
重要
IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
Azure IoT Edge を使用すると、モジュールを使用してエッジ デバイスにビジネス ロジックをデプロイおよび管理 できます。 Azure IoT Edge モジュールは、IoT Edge によって管理される計算の最小単位であり、Azure Stream Analytics などの Azure サービスまたは独自ソリューション固有のコードを含めることができます。 モジュールを開発、デプロイ、および管理する方法を理解するには、モジュールの 4 つの概念的要素を考えます。
- モジュール イメージ。モジュールを定義するソフトウェアを含むパッケージです。
- モジュール インスタンスは、IoT Edge デバイスでモジュール イメージを実行している計算の特定の単位です。 モジュール インスタンスは、IoT Edge ランタイムによって開始されます。
- モジュール ID。IoT Hub に格納されている情報 (セキュリティ資格情報を含む) の一部で、各モジュール インスタンスに関連付けられています。
- モジュール ツイン。IoT Hub に格納されている JSON ドキュメントで、メタデータ、構成、条件などのモジュール インスタンスの状態情報が含まれています。
モジュール イメージとインスタンス
IoT Edge モジュール イメージには、IoT Edge ランタイムの管理、セキュリティ、および通信機能を活用するアプリケーションが含まれています。 独自のモジュール イメージを開発したり、Azure Stream Analytics などのサポートされている Azure サービスからモジュール イメージをエクスポートしたりすることもできます。 イメージはクラウドに存在し、さまざまなソリューションでイメージを更新、変更、デプロイできます。 たとえば、機械学習を使用して生産ラインの出力を予測するモジュールは、コンピューター ビジョンを使用してドローンを制御するモジュールとは別の画像です。
IoT Edge ランタイムは、デバイス上でモジュール イメージをデプロイして起動するたびに、そのモジュールの新しいインスタンスを作成します。 世界の異なる地域にある 2 つのデバイスが同じモジュール イメージを使用できます。 ただし、各デバイスは、モジュールの起動時には、それぞれ独自のモジュール インスタンスを持ちます。
実装では、モジュール イメージはリポジトリ内のコンテナー イメージとして存在し、モジュール インスタンスはデバイス上のコンテナーです。
モジュール ID
IoT Edge ランタイムは、新しいモジュール インスタンスを作成するときに、対応するモジュール ID を割り当てます。 IoT Hub にはモジュール ID が格納されます。これは、モジュール インスタンスのすべてのローカルおよびクラウド通信のアドレス指定とセキュリティ スコープとして機能します。
モジュール インスタンスの ID は、デバイスの ID と、ソリューション内のモジュールに割り当てる名前によって異なります。 たとえば、 insight
モジュールに名前を付け、 Hannover01
というデバイスにデプロイすると、IoT Edge ランタイムによって /devices/Hannover01/modules/insight
という名前の対応するモジュール ID が作成されます。
同じデバイスに 1 つのモジュール イメージを複数回デプロイする必要があるシナリオでは、異なる名前でデプロイできます。
モジュール ツイン
各モジュール インスタンスには、構成に使用する対応するモジュール ツインがあります。 モジュール ID は、インスタンスとツインをリンクします。
モジュール ツインは、モジュールの情報と構成プロパティを格納する JSON ドキュメントです。 この概念は、IoT Hub のデバイス ツインの概念に似ています。 モジュール ツインの構造は、デバイス ツインと同じです。 両方の種類のツインと対話するための 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 デバイス、モジュール、ダウンストリーム デバイスの拡張オフライン機能の理解に関するページを参照してください。