Azure Event Grid とは

Azure Event Grid は、MQTT および HTTP プロトコルを使用した柔軟なメッセージ消費パターンを提供する、スケーラブルでフル マネージドの 発行/サブスクライブ メッセージ配信サービスです。 Azure Event Grid を使用すると、デバイス データを使用したデータ パイプラインの構築、アプリケーションの統合、イベントドリブン サーバーレス アーキテクチャの構築を行うことができます。 Event Grid により、クライアントは MQTT v3.1.1 および v5.0 プロトコルを介してメッセージを発行およびサブスクライブして、モノのインターネット (IoT) ソリューションをサポートできます。 Event Grid を使用すると、HTTP を介して、パブリッシャー サービスがそのシステム状態の変更 (イベント) をサブスクライバー アプリケーションに通知するイベント ドリブン ソリューションを構築できます。 サブスクライバーにイベントを送信するように Event Grid を構成できます (プッシュ配信)。または、サブスクライバーを Event Grid に接続してイベントを読み取ることができます (プル配信)。 Event Grid では、CloudEvents 1.0 の仕様がサポートされており、システム間の相互運用性が提供されます。

MQTT および HTTP プロトコルを使用するパブリッシャーとサブスクライバーを示す Event Grid の概要図。

Azure Event Grid は、それをサポートするすべてのリージョンの可用性ゾーンにわたってデプロイされる一般提供サービスです。 Event Grid でサポートされているリージョンの一覧については、「リージョン別の利用可能な製品」を参照してください。

概要

Azure Event Grid は、統合における多様な目標を達成するために、データ パイプラインのさまざまな段階で使用されます。

MQTT メッセージング。 IoT デバイスとアプリケーションは、MQTT を介して相互に通信できます。 Event Grid を使用して MQTT メッセージを Azure サービスまたはカスタム エンドポイントにルーティングし、さらにデータ分析、視覚化、またはストレージを行うこともできます。 この Azure サービスとの統合により、IoT デバイスからのデータ インジェストから始まるデータ パイプラインを構築できます。

プッシュおよびプル配信モードを使用したデータ配信。 データ パイプライン内の任意の時点で、HTTP アプリケーションはプッシュまたはプル API を使用してメッセージを使用できます。 データのソースには MQTT クライアントのデータが含まれる場合がありますが、HTTP 経由でイベントを送信する次のデータ ソースも含まれます。

  • Azure サービス
  • カスタム アプリケーション
  • 外部パートナー (SaaS) システム

プッシュ配信を使用する場合、Event Grid は独自のアプリケーション Webhook と Azure サービスを含む宛先にデータを送信できます。

機能

Event Grid には、豊富な機能の組み合わせが用意されています。 次のような機能が該当します。

MQTT メッセージング

  • MQTT v3.1.1 と MQTT v5.0 のサポート - サービスとの通信に任意のオープンソース MQTT クライアント ライブラリを使用できます。
  • ワイルドカードを使用したカスタム トピックのサポート - 独自のトピック構造を利用できます。
  • 発行/サブスクライブ メッセージング モデル - 一対多、多対一、一対一のメッセージング パターンを使用して効率的に通信します。
  • 組み込みのクラウド統合 - さらに処理を行うために、MQTT メッセージを Azure サービスまたはカスタム Webhook にルーティングします。
  • 柔軟できめ細かいアクセス制御モデル - クライアントとトピックをグループ化してアクセス制御管理を簡素化し、トピック テンプレートでの変数サポートを使用してきめ細かいアクセス制御を実現します。
  • X.509 証明書認証 - IoT 業界での認証の標準的なメカニズムを使用してデバイスを認証します。
  • Microsoft Entra ID (旧称 Azure Active Directory) AAD 認証 - Azure の認証の標準的なメカニズムを使用してアプリケーションを認証します。
  • TLS 1.2 と TLS 1.3 のサポート - 堅牢な暗号化プロトコルを使用してクライアント通信をセキュリティで保護します。
  • マルチセッションのサポート - 信頼性とスケーラビリティを確保するために、アプリケーションを複数のアクティブなセッションに接続します。
  • MQTT over WebSocket - ファイアウォールが制限された環境でクライアントの接続を可能にします。

イベント メッセージング (HTTP)

  • 柔軟なイベント消費モデル – HTTP を使用する場合は、プルまたはプッシュ配信モードを使用してイベントを消費します。
  • システム イベント – 組み込みの Azure サービス イベントを使用してすばやく起動および実行します。
  • 独自のアプリケーション イベント - Event Grid を使用して、ルーティングとフィルター処理を行い、信頼性の高い方法でアプリからカスタム イベントを配信します。
  • パートナー イベント - パートナー SaaS プロバイダー イベントをサブスクライブし、Azure で処理します。
  • 高度なフィルター処理 – イベントの種類やその他のイベント属性でフィルター処理して、イベント ハンドラーまたはコンシューマー アプリが関連するイベントのみを受け取るようにします。
  • 信頼性 – プッシュ配信は、エクスポネンシャル バックオフを使用した 24 時間の再試行メカニズムを備え、イベントが確実に配信されるようにします。 プル配信を使用すると、アプリケーションでイベントの消費を完全に制御できます。
  • 高スループット - Event Grid を使用して、大量の統合ソリューションを構築します。

ユース ケース

Event Grid では、以下のユース ケースがサポートされています。

MQTT メッセージング

Event Grid を使用すると、発行/サブスクライブ メッセージング モデルを使用して、クライアントがカスタム MQTT トピック名で通信できます。 Event Grid では、MQTT v3.1.1、MQTT v3.1.1 over WebSocket、MQTT v5、MQTT v5 over WebSocket を介してメッセージを発行およびサブスクライブするクライアントがサポートされています。 Event Grid を使用すると、特にデータ分析、ストレージ、視覚化などのユース ケースにおいて MQTT メッセージをクラウドに送信できます。

Event Grid は、Azure IoT MQ と統合して、エッジ上の MQTT ブローカー機能を、クラウド内の Event Grid の MQTT ブローカー機能と橋渡しします。 Azure IoT MQ は、Arc 対応 Kubernetes クラスターで実行される、エッジ コンピューティング用の新しい分散 MQTT ブローカーです。 Azure IoT Operations の一部としてパブリック プレビューで使用できるようになりました。

Azure Event Grid の MQTT ブローカー機能は、自動車やモビリティのシナリオの実装などに最適です。 Azure のメッセージングおよびデータ分析サービスを使用して、何百万台もの車両をクラウドに接続するためのセキュリティで保護されたスケーラブルなソリューションを構築する方法については、リファレンス アーキテクチャに関するページを参照してください。

パブリッシャーおよびサブスクライバー クライアントとの双方向 MQTT 通信を示す Event Grid の概要図。

Azure Event Grid の MQTT ブローカー機能を使うと、次のシナリオを実現できます。

IoT テレメトリを取り込む

MQTT プロトコルを使用してクラウド アプリにメッセージを送信する IoT クライアントを示す Event Grid の概要図。

多対一メッセージング パターンを使用してテレメトリを取り込みます。 たとえば、Event Grid を使用して、複数の IoT デバイスからクラウド アプリケーションにテレメトリを送信します。 このパターンにより、アプリケーションは、デバイスとの多数の接続を管理する負荷を Event Grid にオフロードできます。

コマンドと制御

要求と応答のトピックを使用して MQTT 経由でコマンド メッセージをデバイスに送信するクラウド アプリケーションを示す Event Grid の概要図。

要求/応答 (一対一) メッセージ パターンを使用して MQTT クライアントを制御します。 たとえば、Event Grid を使用して、クラウド アプリケーションから IoT デバイスにコマンドを送信します。

アラートをブロードキャストする

MQTT 経由で複数のデバイスにアラート メッセージを送信するクラウド アプリケーションを示す Event Grid の概要図。

一対多メッセージング パターンを使用して、クライアントのフリートにアラートをブロードキャストします。 たとえば、Event Grid を使用して、クラウド アプリケーションから複数の IoT デバイスにアラートを送信します。 このパターンにより、アプリケーションは、メッセージを 1 つだけ発行できます。これは、サービスによって対象のすべてのクライアントにレプリケートされます。

MQTT データを統合する

MQTT 経由で Event Grid、次に Event Hubs、その後、このサービスから Azure Stream Analytics に正常性データを送信する複数の IoT デバイスを示す図。

プッシュ配信またはプル配信を使用して MQTT メッセージを Azure サービスとカスタム エンドポイントにルーティングすることで、MQTT クライアントからのデータを統合します。 たとえば、Event Grid を使用して、IoT デバイスから Event Hubs、Azure Stream Analytics の順にルーティングして、デバイス テレメトリから分析情報を得ることができます。

個別イベントのプッシュ配信

Event Grid は、プッシュ イベント配信を使用して、一連のさまざまな Azure サービスまたは Webhook にイベントを送信するように構成できます。 イベント ソースには、システム状態の変更を通知するイベント ("個別" イベントとも呼ばれる) を発行するカスタム アプリケーション、Azure サービス、パートナー (SaaS) サービスが含まれます。 その後、Event Grid は、構成済みのサブスクライバーの宛先にこれらのイベントを配信します。

Event Grid のプッシュ配信を使用すると、次のユース ケースを実現できます。

Note

個別イベントのプッシュ配信は、Event Grid Basic レベルと Event Grid Standard レベルで利用できます。相違点の詳細については、「ソリューションに適した Event Grid のレベルを選択する」を参照してください。

イベント ドリブン サーバーレス ソリューションを構築する

HTTP を使用して Event Grid にイベントを発行する Azure Functions を示す図。その後、Event Grid はそれらのイベントを Azure Logic Apps に送信します。

Event Grid を使用して、Azure Functions アプリ、Logic Apps、API Management を使用してサーバーレス ソリューションを構築します。 Event Grid でサーバーレス サービスを使用すると、デプロイされるすべてのインフラストラクチャを調達、管理、セキュリティで保護、保守する必要がある従来のコンピューティング モデルよりも優れた生産性、労力の節約、統合のレベルが得られます。

Azure サービスからイベントを受信する

HTTP 経由で Event Grid にイベントを発行する Blob Storage を示す図。Event Grid は、これらのイベントをイベント ハンドラー (Webhook または Azure サービス) に送信します。

Event Grid は、20 以上の Azure サービスからイベントを受信して、操作を自動化できるようにします。 たとえば、Azure Storage アカウントで新しい BLOB が作成されたときにイベントを受信するように Event Grid を構成することで、ダウンストリーム アプリケーションがそのコンテンツを読み取って処理できるようにします。 サポートされているすべての Azure サービスとイベントの一覧については、システム トピックに関するページを参照してください。

アプリケーションからイベントを受信する

HTTP を使用して Event Grid にイベントを発行する顧客のアプリケーションを示す図。Event Grid は、これらのイベントを Webhook または Azure サービスに送信します。

独自のサービスまたはアプリケーションから、サブスクライバー アプリケーションが処理するイベントを Event Grid に発行します。 Event Grid には、基本的な統合シナリオに対処するためのカスタム トピックと、イベントを数百または数千の異なるグループに配信する必要がある場合に簡単な管理およびルーティング モデルを提供するドメインが用意されています。

パートナーからイベントを受信する (SaaS プロバイダー)

HTTP を使用して Event Grid にイベントを発行する外部パートナーのアプリケーションを示す図。Event Grid は、これらのイベントを Webhook または Azure サービスに送信します。

マルチテナント SaaS プロバイダーまたはプラットフォームは、パートナー イベントと呼ばれる機能を通じてイベントを Event Grid に発行できます。 たとえば、それらのイベントをサブスクライブして、タスクを自動化できます。 現在、次のパートナーからのイベントを利用できます。

イベント ハンドラー

イベント サブスクリプションは、プッシュ配信を使用してイベントを送信する対象のイベント ハンドラーまたは宛先を定義できる汎用構成リソースです。 次のイベント ハンドラーがサポートされています。

個別イベントのプル配信

Azure Event Grid ではCloudEvents のプル配信を行えます。 この配信モードを使用して、クライアントは Event Grid に接続してイベントを読み取ります。 プル配信を使用して、次のユース ケースを実現できます。

自分のペースでイベントを受信する

パブリッシャーおよびコンシューマー アプリケーションの概要図。パブリッシャーは、サブスクライバーのイベント消費率よりも速いペースで Event Grid にイベントを送信します。

1 つ以上のクライアントが Azure Event Grid に接続して、自分のペースでメッセージを読み取ることができます。 Event Grid を使用すると、クライアントはイベントの消費を完全に制御できます。 アプリケーションは、たとえば 1 日の特定の時刻などにイベントを受信できます。 また、Event Grid から読み取るクライアントを追加することで、ソリューションの消費率を増やすこともできます。

VNET 内のプライベート エンドポイントを介して Event Grid からイベントを読み取る VNET 内のコンシューマー アプリの概要図。

仮想ネットワーク内のプライベート エンドポイントを介して CloudEvents を発行および読み取るために、Azure Event Grid に接続するようにプライベートリンクを構成できます。 仮想ネットワークと Event Grid の間のトラフィックは、Microsoft のバックボーン ネットワークを経由します。

重要

プライベート リンクは、プッシュ配信ではなく、プル配信で使用できます。 アプリケーションが Event Grid に接続してイベントを発行する場合やイベントを受信する場合にプライベート リンクを使用することができます。ただし、Event Grid が Webhook や Azure サービスに接続してイベントを配信するときには使用できません。

Event Grid 名前空間が使用可能なリージョン

新しい MQTT ブローカーと名前空間トピックの機能が利用できるリージョンの一覧を次に示します。

  • オーストラリア東部
  • オーストラリア東南部
  • ブラジル南部
  • ブラジル南東部
  • カナダ中部
  • カナダ東部
  • インド中部
  • 米国中部
  • 東アジア
  • 米国東部
  • 米国東部 2
  • フランス中部
  • ドイツ中西部
  • イスラエル中部
  • イタリア北部
  • 東日本
  • 西日本
  • 韓国中部
  • 韓国南部
  • 米国中北部
  • 北ヨーロッパ
  • ノルウェー東部
  • ポーランド中部
  • 南アフリカ西部
  • 米国中南部
  • インド南部
  • 東南アジア
  • スウェーデン中部
  • スイス北部
  • アラブ首長国連邦北部
  • 英国南部
  • 英国西部
  • 西ヨーロッパ
  • 米国西部 2
  • 米国西部 3

次のステップ

MQTT メッセージング

プルまたはプッシュ配信を使用したデータ配布

関連項目