IoT Hub のメッセージ ルーティングと Event Grid の比較
Azure IoT Hub には、接続されたデバイスからデータをストリーミングし、そのデータをビジネス アプリケーションに統合する機能があります。 IoT Hub には、IoT イベントを他の Azure サービスやビジネス アプリケーションに統合するための 2 つの方法が用意されています。 この記事では、実際のシナリオに最適なオプションを選択できるように、この機能を提供する 2 つの方法について説明します。
注意
この記事で言及されている一部の機能 (cloud-to-device メッセージング、デバイス ツイン、デバイス管理など) は、IoT Hub の Standard レベルだけで使用することができます。 Basic および Standard または Free レベルの IoT Hub の詳細については、ソリューションに適した IoT Hub のレベルの選択に関するページを参照してください。
IoT Hub メッセージ ルーティング : この IoT Hub の機能を使用して、Azure Storage コンテナー、Event Hubs、Service Bus キュー、Service Bus トピックなどのサービス エンドポイントに、device-to-cloud メッセージをルーティングすることができます。 また、ルーティングでは、エンドポイントにルーティングする前にデータをフィルター処理するクエリ機能も提供されています。 デバイスのテレメトリ データに加えて、非テレメトリ イベントをルーティングし、アクションのトリガーに使用することもできます。
IoT Hub の Event Grid との統合: Azure Event Grid は、発行-サブスクライブ モデルを使用する、フル マネージドのイベント ルーティング サービスです。 IoT Hub と Event Grid は、Azure サービスと Azure 以外のサービスに IoT Hub イベントを統合するために、ほぼリアルタイムで連携します。 IoT Hub は、デバイス イベント とテレメトリ イベントの両方を発行します。
相違点
メッセージ ルーティングと Event Grid は共にアラートの構成を可能にしますが、両者の間には主な違いがいくつかあります。 詳細については、以下の表を参照してください。
機能 | IoT Hub メッセージ ルーティング | IoT Hub の Event Grid との統合 |
---|---|---|
デバイスのメッセージとイベント | はい、メッセージ ルーティングは、テレメトリ データ、デバイス ツインの変更、デバイス ライフサイクル イベント、デジタル ツイン変更イベント、デバイス接続状態イベントをサポートしています。 | はい、Event Grid は、テレメトリ データと、デバイスの作成、削除、接続、切断などのデバイス イベントをサポートしています。 ただし、Event Grid は、デバイス ツイン変更イベントとデジタル ツイン変更イベントはサポートしていません。 |
順序付け | はい、メッセージ ルーティングではイベントの順序が維持されます。 | いいえ、Event Grid ではイベントの順序は保証されません。 |
フィルター処理 | メッセージ アプリケーション プロパティ、メッセージ システム プロパティ、メッセージ本文、デバイス ツインのタグおよびプロパティに基づく豊富なフィルター。 フィルター処理は、デジタル ツイン変更イベントには適用されません。 例については、メッセージ ルーティングのクエリ構文に関するページを参照してください。 | 各イベントのイベントの種類、サブジェクトの種類、属性に基づくフィルター処理。 たとえば、Event Grid サブスクリプションでのフィルター処理イベントの理解に関するページを参照してください。 テレメトリ イベントをサブスクライブする場合、Event Grid に発行する前に、データにフィルターを適用して、IoT Hub 内のメッセージ プロパティ、メッセージ本文、デバイスツインでフィルター処理できます。 イベントのフィルター方法に関するページを参照してください。 |
エンドポイント |
有料の IoT Hub SKU (S1、S2、S3) では、IoT Hub ごとに 10 個のカスタム エンドポイントと 100 個のルートを使用できます。 |
Event Grid では、IoT Hub ごとに 500 個のエンドポイントがサポートされます。 最新のエンドポイントの一覧については、Event Grid のイベント ハンドラーに関する記事を参照してください。 |
コスト | メッセージ ルーティングについては、別料金はかかりません。 IoT Hub へのテレメトリのイングレスのみが課金されます。 たとえば、3 つの異なるエンドポイントにメッセージをルーティングする場合、1 つのメッセージに対してのみ課金されます。 | IoT Hub からの課金はありません。 Event Grid では、毎月最初の 100,000 操作が無料で提供され、それ以降は 100 万操作あたり 0.60 ドルが課金されます。 |
類似点
IoT Hub メッセージ ルーティングと Event Grid には類似点もあります。そのいくつかについて以下の表で詳しく説明します。
機能 | IoT Hub メッセージ ルーティング | IoT Hub の Event Grid との統合 |
---|---|---|
最大メッセージ サイズ | 256 KB、device-to-cloud | 256 KB、device-to-cloud |
信頼性 | 高い: ルートごとに少なくとも 1 回はエンドポイントに各メッセージを配信します。 1 時間以内に配信されないメッセージはすべて有効期限切れになります。 | 高い: サブスクリプションごとに少なくとも 1 回は webhook に各メッセージを配信します。 24 時間以内に配信されないイベントはすべて有効期限切れになります。 |
スケーラビリティ | 高い: 何十億ものメッセージを送信する数百万の同時接続されたデバイスをサポートするように最適化されます。 | 高い: リージョンあたり 10,000,000 イベント/秒をルーティングすることができます。 |
待機時間 | 少ない: ほぼリアルタイムです。 | 少ない: ほぼリアルタイムです。 |
複数のエンドポイントへの送信 | はい、1 つのメッセージを複数のエンドポイントに送信します。 | はい、1 つのメッセージを複数のエンドポイントに送信します。 |
Security | IoT Hub では、デバイスごとの ID と取り消し可能なアクセス制御が用意されます。 詳細については、IoT Hub のアクセス制御に関する記事を参照してください。 | Event Grid には 3 点での検証が用意されています。イベント サブスクリプション、イベントの発行、webhook のイベント配信です。 詳細については、「Event Grid security and authentication」(Event Grid のセキュリティと認証) を参照してください。 |
選択する方法
IoT Hub メッセージ ルーティングと IoT Hub の Event Grid との統合は、同様の結果を得るために異なるアクションを実行します。 両者は共に IoT Hub ソリューションから情報を取得し、他のサービスが対応できるように情報を渡します。 どのようにして、どちらを使用するか決めればよいのでしょうか。 判断に役立つ次の質問を検討します。
どのような種類のデータをエンドポイントに送信しますか。
他のサービスにテレメトリ データを送信する必要がある場合は、IoT Hub メッセージ ルーティングを使用します。 メッセージ ルーティングでは、メッセージ アプリケーションとメッセージ システムのプロパティ、メッセージ本文、デバイス ツインのタグとプロパティのクエリも可能です。
IoT Hub の Event Grid との統合は、IoT Hub サービスで発生するイベントに対応します。 これらの IoT Hub イベントには、利用統計情報、デバイスの作成、削除、接続、切断が含まれます。 利用統計情報をサブスクライブしている場合、Event Grid に発行する前に、データに追加のフィルターを適用し、ご利用の IoT Hub のメッセージ プロパティ、メッセージ本文、デバイス ツインにフィルターを適用することができます。 イベントのフィルター方法に関するページを参照してください。
どのようなエンドポイントがこの情報を受信する必要がありますか。
IoT Hub メッセージ ルーティングでは、固有のエンドポイント数とエンドポイントの種類が制限されますが、コネクタを構築してデータとイベントを追加のエンドポイントに経路変更することができます。 サポートされるエンドポイントの完全な一覧については、前のセクションの表を参照してください。
IoT Hub と Event Grid の統合では、IoT Hub ごとに 500 個のエンドポイントをサポートし、より多様なエンドポイントの種類をサポートします。 これはネイティブに Azure Functions、Logic Apps、Storage と Service Bus キューと統合され、Azure サービスのエコシステム外のデータ送信に拡張し、サードパーティのビジネス アプリケーションに対して Webhook も使用します。
データが到着する順序は重要ですか。
IoT Hub メッセージ ルーティングでは、メッセージが送信される順序が保持されるため、同じ順序で配信されます。
Event Grid では、エンドポイントがイベントを発生順に受信することは保証されません。 メッセージの絶対的な順序が重要なケースや、コンシューマーが信頼できるメッセージの一意識別子を必要とするケースでは、メッセージ ルーティングを使用することをお勧めします。
次の手順
- IoT Hub メッセージ ルーティングおよび IoT Hub エンドポイントについて学習します。
- Logic Apps を使用して Azure IoT Hub のイベントに関する電子メール通知を送信する手順に従って Event Grid の統合を試します。