Azure Event Grid は、メッセージ配布用の高度にスケーラブルでフル マネージドの発行/サブスクライブ サービスです。 Event Grid は柔軟なメッセージ消費パターンを提供し、メッセージ キュー テレメトリ トランスポート (MQTT) プロトコルと HTTP プロトコルを使用します。 Event Grid を使用すると、デバイス データを使用してデータ パイプラインを構築し、アプリケーションを統合し、イベントドリブン サーバーレス アーキテクチャを構築できます。
Event Grid により、クライアントは MQTT v3.1.1 および v5.0 プロトコルを介してメッセージを発行およびサブスクライブして、モノのインターネット (IoT) ソリューションをサポートできます。 HTTP を使用すると、Event Grid を使用して、パブリッシャー サービスがシステム状態の変更 (イベント) をサブスクライバー アプリケーションに通知するイベント ドリブン ソリューションを構築できます。 イベントをサブスクライバーに送信するように Event Grid を構成することも (プッシュ配信)、サブスクライバーは Event Grid に接続してイベントを読み取ることができます (プル配信)。 Event Grid では、システム間の相互運用性を提供する CloudEvents 1.0 仕様がサポートされています。
コア機能
Event Grid には、次の 2 つの主な機能があります。
MQTT メッセージング: IoT デバイスとアプリケーションは、MQTT 経由で相互に通信できます。 Event Grid を使用して、MQTT メッセージを Azure サービスまたはカスタム エンドポイントにルーティングして、さらにデータ分析、視覚化、またはストレージを行うこともできます。 この Azure サービスとの統合を使用すると、IoT デバイスからのデータ インジェストから始まるデータ パイプラインを構築できます。
プッシュ配信モードとプル配信モードを使用したデータ分散: データ パイプライン内の任意の時点で、HTTP アプリケーションはプッシュ API またはプル API を使用してメッセージを使用できます。 データのソースには MQTT クライアントのデータが含まれる場合がありますが、HTTP 経由でイベントを送信する次のデータ ソースも含まれます。
- Azure サービス
- カスタム アプリケーション
- 外部パートナー (サービスとしてのソフトウェア) システム
Event Grid プッシュ配信メカニズムは、独自のアプリケーション Webhook と Azure サービスを含む宛先にデータを送信します。 この 2 つの機能を次に示します。
MQTT メッセージング
Event Grid を使用すると、発行/サブスクライブ メッセージング モデルを使用して 、クライアントがカスタム MQTT トピック名 で通信できます。 Event Grid では、WebSocket 経由の MQTT v3.1.1、MQTT v3.1.1、WebSocket 経由の MQTT v5、MQTT v5 経由でのメッセージのパブリッシュとサブスクライブを行うクライアントがサポートされています。
Event Grid では、HTTPS 経由で MQTT メッセージを送信するデバイスとサービスもサポートされています。これにより、MQTT 以外のクライアントとの統合が簡略化されます。 Event Grid を使用すると、特にデータ分析、ストレージ、視覚化などのユース ケースにおいて MQTT メッセージをクラウドに送信できます。 この機能は現在プレビュー段階です。
Event Grid は Azure IoT Operations と統合され、エッジ上の MQTT ブローカー機能をクラウドの Event Grid MQTT ブローカー機能と橋渡しします。 Azure IoT MQTT ブローカーは、Azure Arc 対応 Kubernetes クラスターで実行されるエッジ コンピューティング用の新しい分散 MQTT ブローカーです。 Azure IoT 操作の一部として使用できるようになりました。
Event Grid の MQTT ブローカー機能は、自動車、モビリティ、製造のシナリオなどに最適です。 Azure メッセージングおよびデータ分析サービスを使用して何百万もの MQTT クライアントをクラウドに接続するためのセキュリティで保護されたスケーラブルなソリューションを構築する方法については、 自動車 および 製造 のリファレンス アーキテクチャを参照してください。
Event Grid での MQTT メッセージングのサポートのハイライト:
- MQTT v3.1.1 および MQTT v5.0のサポート: オープンソースの MQTT クライアント ライブラリを使用してサービスと通信します。
- ワイルドカードをサポートするカスタム トピック: 独自のトピック構造を使用します。
- パブリッシュ/サブスクライブ メッセージング モデル: 一対多、多対一、一対一のメッセージング パターンを使用して効率的に通信します。
- 組み込みのクラウド統合: MQTT メッセージを Azure サービスまたはカスタム Webhook にルーティングして、さらに処理します。
- 柔軟できめ細かいアクセス制御モデル: クライアントとトピックをグループ化して、アクセス制御管理を簡素化します。 トピック テンプレートの変数サポートを使用して、きめ細かなアクセス制御を行います。
- MQTT ブローカー認証方法: IoT デバイスの業界標準である X.509 証明書認証を使用します。 アプリケーションの Azure 認証標準である Microsoft Entra ID 認証を使用します。 OAuth 2.0 JSON Web トークン (JWT) 認証のような柔軟な認証パターンを使用します。これは、Azure にプロビジョニングされていない MQTT クライアントにとって軽量で安全です。 カスタム Webhook 認証を使用します。これにより、外部 HTTP エンドポイント (webhook) で MQTT 接続を動的に認証できます。 この方法では、Entra ID JWT 検証を使用して、セキュリティで保護されたアクセスを確保します。
- トランスポート層セキュリティ (TLS) 1.2 および TLS 1.3 のサポート: 堅牢な暗号化プロトコルを使用してクライアント通信をセキュリティで保護します。
- 複数セッションのサポート: アプリケーションを複数のアクティブなセッションに接続して、信頼性とスケーラビリティを確保します。
- MQTT over WebSocket: ファイアウォールが制限された環境のクライアントの接続を有効にします。
- カスタム ドメイン名: ユーザーが Event Grid 名前空間の MQTT エンドポイントに独自のドメイン名を割り当てることを許可します。これにより、セキュリティが強化され、クライアントの構成が簡略化されます。
- クライアント ライフサイクル イベント: アプリケーションがクライアント接続の状態またはクライアント リソース操作に関するイベントに対応できるようにします。
- HTTP 発行: デバイスとサービスが HTTPS 経由で Event Grid に MQTT メッセージを送信できるようにします。これにより、MQTT 以外のクライアントとの統合が簡略化されます。
- MQTT 保持: トピックの最後の既知のメッセージが新しいサブスクライバーに自動的に配信され、即時の状態同期が可能になります。
MQTT ブローカーの詳細については、次の記事を参照してください。
- 概要
- MQTT メッセージの発行とサブスクライブ
- チュートリアル: 名前空間のトピックを使用して MQTT メッセージを Azure Event Hubs にルーティングする
- チュートリアル: カスタム トピックを使用して MQTT メッセージを Azure Functions にルーティングする
イベント メッセージング (HTTP)
Event Grid では、HTTP を使用したプッシュ イベント配信とプル イベント配信がサポートされています。 プッシュ配信では、Event Grid がイベントを送信する宛先をイベント サブスクリプションで定義します。 プル配信では、サブスクライバー アプリケーションは Event Grid に接続してイベントを使用します。 プル配信は、Event Grid 名前空間内のトピックでサポートされています。
イベント ハンドラー
プッシュ配信では、イベント サブスクリプションは、プッシュ配信を使用してイベントを送信するイベント ハンドラーまたは送信先を定義するために使用できる汎用構成リソースです。 たとえば、Webhook、Azure 関数、またはイベント ハブにデータを送信できます。 サポートされているイベント ハンドラーの完全な一覧については、次を参照してください。
- 名前空間トピックでサポートされるイベント ハンドラー。
- カスタム、システム、ドメイン、およびパートナーのトピックでサポートされるイベント ハンドラー。
プッシュ配信とプル配信
次の一般的なガイドラインは、プル配信またはプッシュ配信を使用するタイミングを決定するのに役立ちます。
プル配信
- イベントを受信するタイミングを完全に制御する必要があります。 たとえば、アプリケーションが常に稼働していない場合や、十分に安定していない場合があります。 また、特定の時刻にのみデータを処理することもできます。
- イベントの消費を完全に制御する必要があるとき。 たとえば、コンシューマー アプリケーションのダウンストリーム サービスまたはレイヤーに、イベントの処理を妨げる問題がある場合があります。 その場合、プル配信 API を使用すると、コンシューマー アプリは、後で配信するために既に読み取られたイベントをブローカーに解放できます。
- プッシュ配信ではなく、プル配信でのみ可能なイベントを受信するときに プライベート リンク を使用する必要があります。
- エンドポイントを公開してプッシュ配信を使用する機能はありませんが、Event Grid に接続してイベントを消費できます。
プッシュ配信
- システム状態の変化が発生したことを判別するための定期的なポーリングを回避する必要がある。 代わりに、Event Grid を使用して、状態の変更が発生したときにイベントを送信する必要があります。
- 送信呼び出しを行うことができないアプリケーションがあるとき。 たとえば、組織がデータ流出を懸念している場合があります。 ただし、アプリケーションはパブリック エンドポイントを経由でイベントを受信できます。
HTTP モデルのハイライト:
- 柔軟なイベント消費モデル: HTTP を使用する場合は、プルまたはプッシュ配信モードを使用してイベントを使用します。
- システム イベント: 組み込みの Azure サービス イベントを使用して迅速に起動して実行します。
- 独自のアプリケーション イベント: Event Grid を使用して、アプリからカスタム イベントをルーティング、フィルター処理、および確実に配信します。
- パートナー イベント: パートナー SaaS プロバイダー イベントをサブスクライブし、Azure で処理します。
- 高度なフィルター処理: イベントの種類やその他のイベント属性をフィルター処理して、イベント ハンドラーまたはコンシューマー アプリが関連するイベントのみを受け取るようにします。
- 信頼性: プッシュ配信には、イベントが確実に配信されるように、指数バックオフを備えた 24 時間の再試行メカニズムが備わっています。 プル配信を使用すると、アプリケーションでイベントの消費を完全に制御できます。
- 高スループット: Event Grid を使用して、大量の統合ソリューションを構築します。
- カスタム ドメイン名: ユーザーが Event Grid 名前空間の HTTP エンドポイントに独自のドメイン名を割り当てることを許可します。これにより、セキュリティが強化され、クライアント構成が簡略化されます。
詳細については、次の記事をご覧ください。
ユース ケース
Event Grid を使用できるユース ケースの一覧については、「 ユース ケース」を参照してください。
サポートされているリージョン
新しい MQTT ブローカーと名前空間のトピック機能は、次のリージョンで使用できます。
| リージョン | リージョン | リージョン | リージョン |
|---|---|---|---|
| オーストラリア東部 | オーストラリア東南部 | オーストラリア中部 | オーストラリア中部 2 |
| ブラジル南部 | ブラジル南東部 | カナダ中部 | カナダ東部 |
| インド中部 | 米国中部 | 東アジア | 米国東部 |
| 米国東部 2 | 米国西部 | フランス中部 | フランス南部 |
| ドイツ北部 | ドイツ中西部 | イスラエル中部 | イタリア北部 |
| 東日本 | 西日本 | 韓国中部 | 韓国南部 |
| メキシコ中部 | 米国中北部 | 北ヨーロッパ | ノルウェー東部 |
| ポーランド中部 | 南アフリカ西部 | 南アフリカ北部 | 米国中南部 |
| インド南部 | 東南アジア | スペイン中部 | スウェーデン中部 |
| スウェーデン南部 | スイス北部 | スイス西部 | アラブ首長国連邦北部 |
| アラブ首長国連邦中部 | 英国南部 | 英国西部 | 西ヨーロッパ |
| 米国西部 2 | 米国西部 3 | 米国中西部 |