次の方法で共有


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を参照してください。

IoT Edge ランタイムは、デバイスを IoT Edge デバイスに変換する一連のプログラムです。 ランタイム コンポーネントを使用すると、IoT Edgeデバイスはエッジで実行するコードを受け取り、結果を伝達できます。

IoT Edge ランタイムは、IoT Edge デバイスで次の機能を担当します。

  • ワークロードをインストールして更新します。
  • Azure IoT Edgeセキュリティ標準を維持します。
  • IoT Edgeモジュールが確実に稼働し続けるようにします。
  • モジュールの正常性をクラウドにレポートしてリモート監視を可能にする。
  • 次の間の通信を管理します。
    • ダウンストリーム デバイスとIoT Edge デバイス
    • IoT Edge デバイス上のモジュール
    • IoT Edge デバイスとクラウド
    • IoT Edge デバイス

ランタイムが分析情報とモジュールの正常性をIoT Hubに伝達する方法を示すダイアグラム。

IoT Edge ランタイムの役割は、通信とモジュール管理の 2 つのカテゴリに分類されます。 これらのロールは、IoT Edge ランタイムの 2 つのコンポーネントによって実行されます。 IoT Edge エージェントはモジュールをデプロイして監視し、IoT Edge hub が通信を処理します。

IoT Edge エージェントとIoT Edge ハブは、IoT Edge デバイスで実行されている他のモジュールと同様に、モジュールです。 これらは、ランタイム モジュールと呼ばれる場合もあります。

IoT Edge エージェント

IoT Edge エージェントは、Azure IoT Edge ランタイム内の 2 つのモジュールのいずれかです。 モジュールをインスタンス化し、実行を続け、その状態をIoT Hubに報告します。 この構成データは、IoT Edge エージェント モジュール ツインのプロパティとして書き込みます。

IoT Edge セキュリティ デーモンは、デバイスの起動時にIoT Edge エージェントを起動します。 エージェントは、IoT Hubからモジュール ツインを取得し、配置マニフェストを検査します。 配置マニフェストとは、開始する必要があるモジュールを宣言する JSON ファイルです。

配置マニフェストの各項目には、モジュールに関する特定の情報が含まれており、モジュールのライフサイクルを制御するためにIoT Edge エージェントによって使用されます。 IoT Edge エージェントがモジュールを制御するために使用するすべてのプロパティの詳細については、「IoT Edge エージェントとIoT Edge ハブ モジュール ツインのプロパティを参照してください。

IoT Edge エージェントは、ランタイム応答を IoT Hub に送信します。 考えられる応答の一覧を以下に示します。

  • 200 - OK
  • 400 - デプロイ構成が正しくない形式であるか、無効です。
  • 417 - デバイスにデプロイ構成セットがありません。
  • 412 - デプロイ構成にあるスキーマ バージョンが無効です。
  • 406 - IoT Edge デバイスがオフラインであるか、状態レポートを送信していません。
  • 500 - IoT Edge ランタイムでエラーが発生しました。

配置マニフェストの作成の詳細については、「モジュールをデプロイし、IoT Edgeを参照してください。

セキュリティ

IoT Edge エージェントは、IoT Edge デバイスのセキュリティにおいて重要な役割を果たします。 たとえば、起動前のモジュール イメージの検証などの操作を実行します。

Azure IoT Edge セキュリティ フレームワークの詳細については、「IoT Edge security manager」を参照してください。

IoT Edge ハブ

IoT Edge ハブは、Azure IoT Edge ランタイムを構成するもう 1 つのモジュールです。 IoT Hubと同じプロトコル エンドポイントを公開することで、IoT Hubのローカル プロキシとして機能します。 この一貫性は、クライアントがIoT Hubする場合と同様に、IoT Edge ランタイムに接続できることを意味します。

IoT Edge ハブは、IoT Hubの完全なローカル バージョンではありません。 一部のタスクをIoT Hubに委任します。 たとえば、デバイスの接続を有効にするために、IoT Edge ハブは、最初の接続時にIoT Hubから認証情報を自動的にダウンロードします。 最初の接続が確立されると、IoT Edge ハブは認証情報をローカルにキャッシュします。 そのデバイスからの今後の接続は、再びクラウドから認証情報をダウンロードする必要なく承認されます。

クラウド通信

IoT Edge ソリューションで使用される帯域幅を減らすために、IoT Edge ハブはクラウドへの実際の接続の数を最適化します。 IoT Edge ハブは、モジュールまたはダウンストリーム デバイスから論理接続を受け取り、それらを組み合わせてクラウドへの 1 つの物理接続を実現します。 ソリューションの他の部分には、このプロセスの詳細は見えません。 クライアントは、すべて同じ接続を介して送信されているにもかかわらず、クラウドへの独自の接続を持っていると考えています。 IoT Edge ハブは、AMQP または MQTT プロトコルを使用して、ダウンストリーム デバイスで使用されるプロトコルとは別に、アップストリームとクラウドとの通信を行うことができます。

重要

IoT Edge ハブでは、AMQP をアップストリーム プロトコルとして使用する場合、接続多重化 (複数の論理接続を 1 つの物理接続に結合する) のみがサポートされます。 MQTT をアップストリーム プロトコルとして構成した場合、各モジュールとダウンストリーム デバイスは独自の接続を使用して IoT Hub に接続します。 AMQP は、既定のアップストリーム プロトコルです。

アップストリーム プロトコルの構成の詳細については、「アップストリーム プロトコルの 選択」を参照してください。

物理デバイスとIoT Hubの間でゲートウェイとして機能するIoT Edge Hubとの関係を示すスクリーンショット

IoT Edge ハブは、IoT Hubに接続されているかどうかを判断できます。 接続が失われた場合、IoT Edge ハブはメッセージまたはツインの更新をローカルに保存します。 接続が再確立されると、すべてのデータが同期されます。 IoT Edge ハブのモジュール ツインのプロパティによって、この一時キャッシュに使用される場所が決まります。 キャッシュのサイズには上限がなく、デバイスにストレージ容量がある限り拡張されます。 詳細については、オフライン機能に関するページを参照してください。

ローカル通信

IoT Edge ハブは、ローカル通信を容易にします。 これにより、メッセージを仲介して、デバイスからモジュール、およびモジュールからデバイスの通信を可能にし、デバイスとモジュールの相互に独立した状態を維持します。 IoT Edge ハブは、IoT Hubでサポートされるメッセージルーティング機能をサポートします。

ルーティングの使用

ブローカー メカニズムでは、IoT Hubと同じルーティング機能を使用して、デバイスまたはモジュール間でメッセージを渡す方法を指定します。 まず、デバイスまたはモジュールは、メッセージを受け入れる入力と、メッセージを書き込む出力を指定します。 それにより、ソリューション開発者は、ソース (出力など) と宛先 (入力など) の間で、潜在的なフィルターを使用してメッセージをルーティングできます。

モジュール間のルートがIoT Edge hubを通過する方法を示すスクリーンショット

AMQP プロトコルで Azure IoT Device SDK を使用するデバイスまたはモジュールは、ルーティングを使用できます。 テレメトリ、ダイレクト メソッド、C2D、ツインなど、すべてのメッセージング IoT Hub プリミティブはサポートされていますが、ユーザー定義のトピックを介した通信はサポートされていません。

ルートの詳細については、「モジュールをデプロイし、IoT Edgeを参照してください。

次のブローカー メカニズム機能を使用できます。

機能 ルーティング
D2C テレメトリ
ローカル テレメトリ
DirectMethods
ツイン
デバイスの C2D
順序付け
フィルター処理
ユーザー定義トピック
デバイス対デバイス
ローカル ブロードキャスト

IoT Edge ハブへの接続

IoT Edge ハブは、MQTT プロトコルまたは AMQP プロトコルを介して、デバイスまたはモジュール クライアントからの接続を受け入れます。

IoT Edge ハブは、MQTT または AMQP を使用して接続するクライアントをサポートします。 HTTP を使用するクライアントはサポートされていません。

クライアントが IoT Edge ハブに接続すると、次の手順が実行されます。

  1. トランスポート層セキュリティ (TLS) が使用されている場合 (推奨)、クライアントとIoT Edge ハブは、暗号化された通信を確立する TLS チャネルを構築します。
  2. クライアントは、自身を識別するためにIoT Edge ハブに認証情報を送信します。
  3. IoT Edge ハブは、承認ポリシーに基づいて接続を承認または拒否します。

セキュリティで保護された接続 (TLS)

既定では、IoT Edge ハブはトランスポート層セキュリティ (TLS) で保護された接続のみを受け入れます。 たとえば、サード パーティが復号化できない暗号化された接続を受け入れます。

クライアントは、ポート 8883 (MQTTS) または 5671 (AMQPS) のIoT Edge ハブに接続すると、TLS チャネルを確立します。 TLS ハンドシェイク中、IoT Edge ハブは、クライアントが検証する必要がある証明書チェーンを送信します。 証明書チェーンを検証するには、信頼された証明書としてIoT Edge ハブのルート証明書をクライアントにインストールする必要があります。 ルート証明書が信頼されていない場合、IoT Edge ハブは証明書検証エラーでクライアント ライブラリを拒否します。

透過的なゲートウェイダウンストリーム デバイスの準備に関するドキュメントでは、ブローカーのこのルート証明書をデバイス クライアントにインストールする手順について説明します。 モジュールでは、IoT Edge デーモン API を使用して、IoT Edge ハブと同じルート証明書を使用できます。

認証

IoT Edge ハブは、IoT Hub ID を持つデバイスまたはモジュールからの接続のみを受け入れます。 たとえば、これらのデバイスとモジュールはIoT Hubに登録され、IoT Hubがサポートする 3 つのクライアント認証方法のいずれかを使用して ID を証明します。Symmetric キー認証X.509 自己署名認証、または X.509 CA 署名認証。 IoT Edge ハブでは、これらのIoT Hub ID をローカルで確認できるため、オフライン中でも接続を行うことができます。

IoT Edge モジュールでは現在、対称キー認証のみがサポートされています。

承認

IoT Edge ハブは、クライアントが、IoT Hubで定義されている信頼されたクライアントのセットに属していることを確認します。 信頼されたクライアントのセットを指定するには、IoT Hubで親/子またはデバイス/モジュールのリレーションシップを設定します。 IoT Edgeでモジュールを作成すると、このモジュールとそのIoT Edge デバイスとの間に信頼関係が自動的に確立されます。 これは、ルーティング ブローカー メカニズムによってサポートされている唯一の認可モデルです。

リモート構成

クラウドは、IoT Edge ハブを完全に制御します。 IoT Hubからmodule ツインを介して構成を取得します。 ツインには、デプロイ内でのメッセージの受け渡し方法を宣言する ルート と呼ばれる必要なプロパティが含まれています。 ルートの詳細については、「ルートの 宣言」を参照してください。

さらに、IoT Edge ハブで environment 変数を設定することで、いくつかの設定を構成できます。

ランタイム品質テレメトリ

IoT Edgeは、製品の品質を向上させるために、ホスト ランタイムとシステム モジュールから匿名テレメトリを収集します。 この情報は、 ランタイム品質 テレメトリと呼ばれます。 IoT Edge エージェントは、収集されたテレメトリをデバイスからクラウドへのメッセージとして定期的にIoT Hubに送信します。 これらのメッセージは、通常のテレメトリには表示されません。また、メッセージ クォータは使用されません。

IoT Edge エージェントとハブは、デバイスのパフォーマンスを把握するために収集できるメトリックを生成します。 これらのメトリックのサブセットは、ランタイム品質テレメトリの一部としてIoT Edge エージェントによって収集されます。 ランタイム品質テレメトリ用に収集されたメトリックには、タグ ms_telemetry のラベルが付けられます。 使用できるすべてのメトリックについては、「組み込みメトリックへのアクセス」を参照してください。

デバイス名やモジュール名など、個人または組織について特定可能な情報は、ランタイム品質のテレメトリの匿名性を確保するために、アップロード前に削除されます。

IoT Edge エージェントは、ランタイム品質テレメトリを 1 時間ごとに収集し、24 時間ごとに 1 つのメッセージをIoT Hubに送信します。

デバイスからのランタイム品質テレメトリの送信をオプトアウトする場合は、次のいずれかの方法を使用します。

  • SendRuntimeQualityTelemetry環境変数を falseに設定します。
  • デプロイ時にAzure ポータルのオプションをオフにします。

次のステップ