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 の仕様がサポートされており、システム間の相互運用性が提供されます。
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 にルーティングします。
- 柔軟できめ細かいアクセス制御モデル - クライアントとトピックをグループ化してアクセス制御管理を簡素化し、トピック テンプレートでの変数サポートを使用してきめ細かいアクセス制御を実現します。
- MQTT ブローカーの認証方法 - X.509 証明書認証 は IoT デバイスの認証の業界標準であり、Microsoft Entra ID 認証は Azure のアプリケーションの認証標準です。OAuth 2.0 (JSON Web Token) 認証は Azure でプロビジョニングされていない MQTT クライアントに軽量で安全かつ柔軟なオプションを提供します。
- TLS 1.2 と TLS 1.3 のサポート - 堅牢な暗号化プロトコルを使用してクライアント通信をセキュリティで保護します。
- マルチセッションのサポート - アプリケーションを複数のアクティブなセッションに接続して、信頼性とスケーラビリティを確保します。
- MQTT over WebSocket - ファイアウォールが制限された環境でクライアントの接続を可能にします。
- カスタム ドメイン名 - ユーザーが Event Grid 名前空間の MQTT エンドポイントに独自のドメイン名を割り当てることが可能になるため、セキュリティが強化され、クライアント構成が簡素化されます。
- クライアント ライフ サイクル イベント - アプリケーションがクライアントの接続ステータスまたはクライアント リソースの操作に関するイベントに反応できるようになります。
イベント メッセージング (HTTP)
- 柔軟なイベント消費モデル – HTTP を使用する場合は、プルまたはプッシュ配信モードを使用してイベントを消費します。
- システム イベント – 組み込みの Azure サービス イベントを使用してすばやく起動および実行します。
- 独自のアプリケーション イベント - Event Grid を使用して、ルーティングとフィルター処理を行い、信頼性の高い方法でアプリからカスタム イベントを配信します。
- パートナー イベント - パートナー SaaS プロバイダー イベントをサブスクライブし、Azure で処理します。
- 高度なフィルター処理 – イベントの種類やその他のイベント属性でフィルター処理して、イベント ハンドラーまたはコンシューマー アプリが関連するイベントのみを受け取るようにします。
- 信頼性 – プッシュ配信は、エクスポネンシャル バックオフを使用した 24 時間の再試行メカニズムを備え、イベントが確実に配信されるようにします。 プル配信を使用すると、アプリケーションでイベントの消費を完全に制御できます。
- 高スループット - Event Grid を使用して、大量の統合ソリューションを構築します。
- カスタム ドメイン名 - ユーザーが Event Grid 名前空間の HTTP エンドポイントに独自のドメイン名を割り当てることが可能になるため、セキュリティが強化され、クライアント構成が簡素化されます。
Note
TLS 1.0/ 1.1 の非推奨について: システム トピックの場合は、Webhook の宛先へのイベント配信に対してのみアクションを実行する必要があります。 宛先が TLS 1.2 をサポートしている場合、イベント配信は 1.2 を使用して行われます。 宛先が TLS 1.2 をサポートしていない場合、イベント配信は自動的に 1.0 と 1.1 にフォールバックします。 2025 年 3 月 1 日より後は、1.0 と 1.1 を使用したイベント配信はサポートされません。 ご利用の Webhook の宛先が TLS 1.2 をサポートしていることを確認してください。 TLS 1.2 のサポートを確認する簡単な方法の 1 つは、Qualys SSL Labsを使用することです。 TLS 1.2 がサポートされていることがレポートに示されている場合、操作は必要ありません。 詳細については、次のブログ記事を参照してください。廃止: Azure Event Grid の今後の TLS の変更
ユース ケース
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 のメッセージングおよびデータ分析サービスを使用して、何百万台もの車両をクラウドに接続するためのセキュリティで保護されたスケーラブルなソリューションを構築する方法については、リファレンス アーキテクチャに関するページを参照してください。
Azure Event Grid の MQTT ブローカー機能を使うと、次のシナリオを実現できます。
IoT テレメトリを取り込む
多対一メッセージング パターンを使用してテレメトリを取り込みます。 たとえば、Event Grid を使用して、複数の IoT デバイスからクラウド アプリケーションにテレメトリを送信します。 このパターンにより、アプリケーションは、デバイスとの多数の接続を管理する負荷を Event Grid にオフロードできます。
コマンドと制御
要求/応答 (一対一) メッセージ パターンを使用して MQTT クライアントを制御します。 たとえば、Event Grid を使用して、クラウド アプリケーションから IoT デバイスにコマンドを送信します。
アラートをブロードキャストする
一対多メッセージング パターンを使用して、クライアントのフリートにアラートをブロードキャストします。 たとえば、Event Grid を使用して、クラウド アプリケーションから複数の IoT デバイスにアラートを送信します。 このパターンにより、アプリケーションは、メッセージを 1 つだけ発行できます。これは、サービスによって対象のすべてのクライアントにレプリケートされます。
MQTT データを統合する
プッシュ配信またはプル配信を使用して 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 のレベルを選択する」を参照してください。
イベント ドリブン サーバーレス ソリューションを構築する
Event Grid を使用して、Azure Functions アプリ、Logic Apps、API Management を使用してサーバーレス ソリューションを構築します。 Event Grid でサーバーレス サービスを使用すると、デプロイされるすべてのインフラストラクチャを調達、管理、セキュリティで保護、保守する必要がある従来のコンピューティング モデルよりも優れた生産性、労力の節約、統合のレベルが得られます。
Azure サービスからイベントを受信する
Event Grid は、20 以上の Azure サービスからイベントを受信して、操作を自動化できるようにします。 たとえば、Azure Storage アカウントで新しい BLOB が作成されたときにイベントを受信するように Event Grid を構成することで、ダウンストリーム アプリケーションがそのコンテンツを読み取って処理できるようにします。 サポートされているすべての Azure サービスとイベントの一覧については、システム トピックに関するページを参照してください。
アプリケーションからイベントを受信する
独自のサービスまたはアプリケーションから、サブスクライバー アプリケーションが処理するイベントを Event Grid に発行します。 Event Grid には名前空間トピックが用意されており、シンプルなリソース モデルを使用して大規模な統合とルーティングの要件に対処できます。 また、基本的な統合要件を満たすためにカスタム トピックを使用したり、数百または数千の異なるグループにイベントを配信する必要がある場合は、シンプルな管理およびルーティング モデルを実現するためにドメインを使用したりすることもできます。
パートナーからイベントを受信する (SaaS プロバイダー)
マルチテナント SaaS プロバイダーまたはプラットフォームは、パートナー イベントと呼ばれる機能を通じてイベントを Event Grid に発行できます。 たとえば、それらのイベントをサブスクライブして、タスクを自動化できます。 現在、次のパートナーからのイベントを利用できます。
- Auth0
- Microsoft Graph API。 Microsoft Graph API を使うと、Microsoft Entra ID、Microsoft Outlook、Teams、会話、セキュリティ アラート、ユニバーサル印刷からイベントを取得できます。
- Tribal Group
- SAP
イベント ハンドラー
イベント サブスクリプションは、プッシュ配信を使用してイベントを送信する対象のイベント ハンドラーまたは宛先を定義できる汎用構成リソースです。 たとえば、Webhook、Azure Function、または Event Hubs にデータを送信できます。 サポートされているイベント ハンドラーの一覧については、次を参照してください。
- 名前空間トピックでサポートされるイベント ハンドラー。
- カスタム、システム、ドメイン、およびパートナーのトピックでサポートされるイベント ハンドラー。
個別イベントのプル配信
Azure Event Grid ではCloudEvents のプル配信を行えます。 この配信モードを使用して、クライアントは Event Grid に接続してイベントを読み取ります。 プル配信を使用して、次のユース ケースを実現できます。
自分のペースでイベントを受信する
1 つ以上のクライアントが Azure Event Grid に接続して、自分のペースでメッセージを読み取ることができます。 Event Grid を使用すると、クライアントはイベントの消費を完全に制御できます。 アプリケーションは、たとえば 1 日の特定の時刻などにイベントを受信できます。 また、Event Grid から読み取るクライアントを追加することで、ソリューションの消費率を増やすこともできます。
プライベート リンクを介してイベントを消費する
仮想ネットワーク内のプライベート エンドポイントを介して CloudEvents を発行および読み取るために、Azure Event Grid に接続するようにプライベートリンクを構成できます。 仮想ネットワークと Event Grid の間のトラフィックは、Microsoft のバックボーン ネットワークを経由します。
重要
プライベート リンクは、プッシュ配信ではなく、プル配信で使用できます。 アプリケーションが Event Grid に接続してイベントを発行する場合やイベントを受信する場合にプライベート リンクを使用することができます。ただし、Event Grid が Webhook や Azure サービスに接続してイベントを配信するときには使用できません。
Event Grid 名前空間が使用可能なリージョン
新しい MQTT ブローカーと名前空間トピックの機能が利用できるリージョンの一覧を次に示します。
リージョン | Region | Region | リージョン |
---|---|---|---|
オーストラリア東部 | オーストラリア東南部 | オーストラリア中部 | オーストラリア中部 2 |
ブラジル南部 | ブラジル南東部 | カナダ中部 | カナダ東部 |
インド中部 | 米国中部 | 東アジア | 米国東部 |
米国東部 2 | 米国西部 | フランス中部 | フランス南部 |
ドイツ北部 | ドイツ中西部 | イスラエル中部 | イタリア北部 |
東日本 | 西日本 | 韓国中部 | 韓国南部 |
メキシコ中部 | 米国中北部 | 北ヨーロッパ | ノルウェー東部 |
ポーランド中部 | 南アフリカ西部 | 南アフリカ北部 | 米国中南部 |
インド南部 | 東南アジア | スペイン中部 | スウェーデン中部 |
スウェーデン南部 | スイス北部 | スイス西部 | アラブ首長国連邦北部 |
アラブ首長国連邦中部 | 英国南部 | 英国西部 | 西ヨーロッパ |
米国西部 2 | 米国西部 3 | 米国中西部 |
次のステップ
MQTT メッセージング
- 概要
- MQTT メッセージの発行とサブスクライブ
- チュートリアル: 名前空間トピックを使用して MQTT メッセージを Azure Event Hubs にルーティングする
- チュートリアル: カスタム トピックを使用して MQTT メッセージを Azure Functions にルーティングする
プルまたはプッシュ配信を使用したデータ配布
- プル配信の概要。
- プッシュ配信の概要。
- 概念
- クイックスタート: 名前空間トピックを使用してアプリ イベントを発行およびサブスクライブする。