Azure IoT Edge ランタイムとそのアーキテクチャの概要

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

重要

IoT Edge 1.4 はサポートされているリリースです。 以前のリリースの場合は、「update IoT Edge」を参照してください。

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 デバイス

ランタイムが分析情報とモジュールの正常性を I o T Hub と通信する方法のスクリーンショット。

IoT Edge ランタイムには、通信とモジュール管理の 2 つのカテゴリの役割があります。 これら 2 つの役割は、IoT Edge ランタイムの部品である 2 つのコンポーネントによって実行されます。 IoT Edge エージェントは、モジュールを展開し、監視しますが、IoT Edge ハブは通信を担当します。

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

IoT Edge エージェント

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

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

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

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

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

デプロイ マニフェストの作成の詳細については、「IoT Edge にモジュールをデプロイしてルートを確立する方法について説明します。」を参照してください。

Security

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

Azure IoT Edge セキュリティ フレームワークについて詳しくは、IoT Edge セキュリティ マネージャーに関する記事をご覧ください。

IoT Edge ハブ

IoT Edge ハブは、Azure IoT Edge ランタイムを構成するもう 1 つのモジュールです。 Edge ハブは、IoT Hub と同じプロトコル エンドポイントを公開することで IoT Hub のためのローカル プロキシとして動作します。 この整合性により、クライアントは、IoT Hub と同じように IoT Edge ランタイムに接続できます。

IoT Edge ハブは、ローカルで実行される完全バージョンの IoT Hub ではありません。 IoT Edge ハブを使うと、一部のタスクを自動的に IoT Hub に委任できます。 たとえば、IoT Edge ハブにより、デバイスが接続できるように、初回の接続で IoT Hub から認証情報が自動的にダウンロードされます。 初回の接続確立後、認証情報が IoT Edge ハブによってローカルにキャッシュされます。 そのデバイスからのその後の接続は、再度クラウドから認証情報をダウンロードする必要なく認可されます。

クラウド通信

IoT Edge ソリューションが使用する帯域幅を減らすために、IoT Edge ハブは、クラウドに対して作成される実際の接続数を最適化します。 IoT Edge ハブは、モジュールやダウンストリーム デバイスからの論理接続を取得し、それらをクラウドへの 1 つの物理接続に統合します。 ソリューションの他の部分は、このプロセスの詳細を認識する必要がありません。 クライアントは、すべて、共通の接続を使って接続しているにもかかわらず、クラウドにそれぞれ独自に接続していると認識します。 IoT Edge ハブは、ダウンストリーム デバイスで使用されているプロトコルと関係なく、AMQP または MQTT プロトコルを使用して、クラウドとアップストリーム通信を行うことができます。 ただし、IoT Edge ハブでは、現在アップストリーム プロトコルとして AMQP を使用し、その多重化機能を使用して、論理接続を 1 つの物理接続に結合することのみがサポートされています。 AMQP は、既定のアップストリーム プロトコルです。

物理デバイスと I o T Hub の間のゲートウェイとしての I o T Edge ハブへのリレーションシップを示すスクリーンショット。

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

ローカル通信

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

ルーティングの使用

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

モジュール間のルートが I o T Edge ハブを通過する方法を示すスクリーンショット。

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

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

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

承認

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

リモート構成

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

さらに、IoT Edge ハブの環境変数を設定することによって、いくつかの構成を行うことができます。

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

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

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

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

IoT Edge エージェントによって 1 時間ごとにテレメトリが収集され、24 時間ごとに 1 つのメッセージが IoT Hub に送信されます。

デバイスからのランタイム テレメトリの送信をオプトアウトする場合は、次の 2 つの方法があります。

  • edgeAgentSendRuntimeQualityTelemetry 環境変数を false に設定します。または、
  • デプロイ時に Azure portal のオプションをオフにします。

次のステップ