Azure Event Grid のプッシュ配信 - 概念
この記事では、プッシュ配信に関連する Event Grid の主な概念について説明します。
Note
名前空間を使う新しいリソース モデルに関連する Event Grid の概念については、この概念の記事を参照してください。
イベント
イベントは、システム内で発生した何かを詳細に記述する最小限の情報です。 すべてのイベントは、イベントの source
、イベントが発生した time
、一意識別子などの一般的な情報を持っています。 各イベントには、特定の種類のイベントにのみ関連する情報も含まれます。 たとえば、Azure Storage に作成される新しいファイルに関するイベントには、lastTimeModified
値などのファイルの詳細が含まれます。 Event Hubs イベントには、Capture ファイルの URL
が含まれます。 Orders マイクロサービスの新しい注文に関するイベントには、注文の状態表現に対する orderId
属性と URL
属性が含まれる場合があります。
CloudEvents
Event Grid は、JSON 形式の HTTP プロトコル バインドを使用して、CNCF のオープン標準 CloudEvents 1.0 仕様を使用しています。 CloudEvents は、特定の要件に関する拡張機能を文書化した、拡張可能なイベント仕様です。 Event Grid を使用する場合、推奨されるイベント形式は CloudEvents です。これは、ユース ケース (イベントやイベント形式などを転送するためのモード) が十分に文書化されており、拡張性があり、相互運用性が高いためです。 CloudEvents を使用すると、イベントを発行したり使用したりするための共通のイベント形式を提供して、相互運用性を向上させることができます。 これにより、ツールを統一化して、イベントのルーティングや処理方法を標準化することができます。
次の表に、CloudEvents 仕様の現在のサポートを示します。
CloudEvents コンテンツ モード | サポート対象 |
---|---|
構造化された JSON | はい |
Binary | いいえ |
イベントの最大許容サイズは 1 MB です。 64 KB を超えるイベントは、64 KB の増分単位で課金されます。 イベントで送信されるプロパティについては、CloudEvents スキーマに関する記事を参照してください。
その他の形式
Event Grid では、システム イベントの発行元向けの財産的価値のある Event Grid スキーマ形式もサポートされています。 CloudEvents 形式を使用してイベントを配信するように Event Grid を構成できます。
ディストリビューターのプロパティ
発行元は、Event Grid にイベントを送信するアプリケーションです。 これは、イベントが発生したものと同じアプリケーション (イベント ソース) である場合があります。 Azure サービスは Event Grid にイベントを発行して、サービス内の発生頻度を通知します。 イベントは自分のアプリケーションから発行できます。 Azure を使用しないでサービスをホストしている組織も、Event Grid からイベントを発行できます。
イベント ソース
イベント ソースは、イベントの発生場所です。 各イベント ソースは、1 つまたは複数のイベントの種類に関連付けられます。 たとえば、Azure Storage は、BLOB 作成イベントのイベント ソースです。 IoT Hub は、デバイスによって作成されたイベントのためのイベント ソースです。 お客様のアプリケーションは、お客様が定義するカスタム イベントのイベント ソースです。 イベント ソースは、Event Grid にイベントを送信します。
パートナー
パートナーは、Azure のお客様がイベントを利用できるようにするためにシステムからイベントを送信する発行元の一種です。 通常、パートナーは SaaS または ERP プロバイダーであり、Azure Event Grid と統合して、お客様がプラットフォーム間でイベントドリブンのユース ケースを実現できるようにします。 パートナーは、Azure Event Grid にイベントを発行できるだけでなく、そこからイベントを受信することもできます。 これらの機能は、パートナー イベント機能を通じて有効になります。
トピック
トピックには、Event Grid に発行されたイベントが保持されます。 通常、関連するイベントのコレクションにはトピック リソースを使用します。 サブスクライバー (Azure サービスまたは他のアプリケーション) は、特定の種類のイベントに応答するために、どのトピックをサブスクライブするかを決定します。 カスタム トピック、システム トピック、パートナー トピックなど、いくつかの種類のトピックがあります。
カスタム トピック
カスタム トピックは、アプリケーションで使用されるトピックでもあります。 これらは、カスタム アプリケーションのイベントドリブン統合を構築するために設計された最初の種類のトピックでした。 独立したリソースとして、イベントが発行される独自のエンドポイントを公開します。
カスタム トピックでは、プッシュ配信がサポートされています。 プルまたはプッシュ配信を使用するタイミングを調査すると、要件に応じてプッシュ配信が適切なアプローチかどうかを判断するのに役立ちます。 また、カスタム トピックに関する記事を参照することもできます。
システム トピック
システム トピックは、Azure Storage、Azure Event Hubs、Azure Service Bus などの Azure サービスによって提供される組み込みのトピックです。 Azure サブスクリプションでシステム トピックを作成し、それをサブスクライブすることができます。 詳細については、システム トピックの概要に関する記事を参照してください。
パートナー トピック
パートナー トピックは、パートナーによって発行されたイベントをサブスクライブするために使用されるトピックの一種です。 この種類の統合を有効にする機能は、パートナー イベントと呼ばれます。 この統合により、パートナー システムからのイベントが利用可能になるパートナー トピックを取得します。 パートナー トピックを作成したら、他の種類のトピックと同様にイベント サブスクリプションを作成します。
イベントのサブスクリプション
Note
名前空間トピックのイベント サブスクリプションについては、この概念の記事を参照してください。
サブスクリプションによって、どのトピックのイベントを受信するかが Event Grid に通知されます。 サブスクリプションを作成する際に、イベントを処理するためのエンドポイントを入力します。 Webhook または Azure サービス リソースをエンドポイントとすることができます。 エンドポイントに送信されるイベントをフィルター処理できます。 たとえば、イベントの種類またはイベント サブジェクトでフィルター処理できます。 詳細については、イベント サブスクリプションと CloudEvents スキーマに関するページを参照してください。 カスタム、システム、パートナーの各トピックとドメインのイベント サブスクリプションには、同じリソース プロパティが用意されています。
カスタム、システム、パートナーの各トピックとドメインのサブスクリプションを作成する例については、次を参照してください。
- Azure CLI を使用したカスタムトピックの作成とイベントのサブスクライブ
- Event Grid に関する Azure PowerShell のサンプル
- Event Grid 用の Azure Resource Manager テンプレート
現在の Event Grid サブスクリプションの取得については、「Event Grid サブスクリプションのクエリを実行する」を参照してください。
イベント サブスクリプションの有効期限
カスタム、システム、パートナー、ドメインの各トピックおよびドメイン サブスクリプションに関連付けられているイベント サブスクリプションの有効期限を設定できます。 イベント サブスクリプションは、その日付後、自動的に期限切れになります。 限られた期間にだけ必要なイベント サブスクリプションに対して有効期限を設定することで、これらのサブスクリプションのクリーンアップについて心配する必要がなくなります。 たとえば、シナリオをテストするためのイベント サブスクリプションを作成するときに、有効期限を設定することができます。
有効期限の設定の例については、「高度なフィルターを使用してサブスクライブする」を参照してください。
イベント ハンドラー
Event Grid から考えると、イベント ハンドラーは、プッシュ配信を使用した際のイベントの送信先です。 ハンドラーは、さらにいくつかのアクションを行ってイベントを処理します。 プッシュ配信を使用する場合、Event Grid ではいくつかのハンドラーの種類がサポートされます。 サポートされている Azure サービスまたは独自の Webhook を、ハンドラーとして使用できます。 Event Grid は、ハンドラーの種類に応じたさまざまなメカニズムに従って、イベントの配信を保証します。 HTTP Webhook イベント ハンドラーでは、ハンドラーが状態コード 200 – OK
を返すまでイベントが再試行されます。 Azure Storage Queue では、Queue サービスがキューにメッセージのプッシュを正常に処理するようになるまで、イベントが再試行されます。
サポートされている任意の Event Grid ハンドラーへのイベントの配信については、「Event handlers in Azure Event Grid (Azure Event Grid 内のイベント ハンドラー)」を参照してください。
セキュリティ
Event Grid は、トピックのサブスクライブと、トピックにイベントを発行する際にセキュリティで保護します。 サブスクライブするときは、Event Grid トピックに対する十分なアクセス許可が必要です。 プッシュ配信を使用しており、イベント ハンドラーが Azure サービスで、マネージド ID を用いて Event Grid を認証する場合、マネージド ID には適切な RBAC ロールが必要です。 たとえば、イベントを Event Hubs に送信する場合、イベント サブスクリプションで使用されるマネージド ID は、Event Hubs データ送信者ロールのメンバーである必要があります。 発行するときは、トピック用の SAS トークンまたはキー認証が必要です。 詳細については、「Event Grid security and authentication」(Event Grid のセキュリティと認証) を参照してください。
イベント配信
プッシュ配信を使用している際に、イベントがサブスクライバーのエンドポイントによって受信されたことを Event Grid が確認できない場合、イベントは再配信されます。 詳細については、Event Grid のメッセージの配信と再試行に関する記事を参照してください。
バッチ処理
カスタム トピックを使用する場合は、イベントを常に配列内で発行する必要があります。 これは、低スループット シナリオの場合は、1 つのバッチにすることができます。
インライン イベントの種類の定義
パートナーの場合は、チャネルの作成時に顧客が利用できるようにしているイベントの種類を定義できます。 インライン イベントの種類の定義を使用すると、サブスクライバーは、イベント サブスクリプションを構成する際に、イベントの種類を指定してイベントを簡単にフィルター処理できます。
可用性ゾーン
Azure 可用性ゾーンは、局所的な障害にトレラントな各 Azure リージョン内の物理的に分離された場所です。 ラウンドトリップ待ち時間が 2 ミリ秒未満の高パフォーマンス ネットワークによって接続されます。 それぞれの可用性ゾーンは、独立した電源、冷却手段、ネットワーク インフラストラクチャを備えた 1 つまたは複数のデータセンターで構成されています。 1 つのゾーンが影響を受けた場合に、リージョンのサービス、容量、高可用性が残りの 2 つのゾーンによってサポートされます。 可用性ゾーンの詳細については、「リージョンと可用性ゾーン」を参照してください。
次のステップ
- Event Grid の概要については、Event Grid の紹介に関する記事を参照してください。
- カスタム トピックの使用を開始するには、Azure Event Grid でのカスタム イベントの作成とルーティングに関する記事を参照してください。