Azure Event Gridのイベント ドメインは、同じアプリケーションに関連する数千の個々のトピックに対して 1 つの発行エンドポイントを提供します。 イベント ドメインは、多数の個別のトピックを含むメタ トピックと考えることができます。 イベントを発行する場合、パブリッシャーは、発行先のイベント ドメインでターゲット トピックを指定する必要があります。 パブリッシャーは、イベントがイベント ドメイン内の別のトピックに送信されるイベントの配列またはバッチを送信できます。 詳細については、「 イベント ドメインへの発行」を参照してください。
イベント ドメインでは、テナントをパーティション分割できるように、各トピックに対する認証と承認の制御も提供されます。 この記事では、イベント ドメインを使用して、さまざまなビジネス組織、顧客、アプリケーションへのカスタム イベントのフローを管理する方法について説明します。 イベント ドメインを使用して、次のことを行います。
- 大規模なマルチテナントのイベントドリブン アーキテクチャを管理します。
- 認証と承認を管理する。
- 各トピックを個別に管理するのではなく、パーティション分割する。
- 各トピック エンドポイントそれぞれに個別に発行することは避けてください。
イベント ドメインのユース ケースの例
例を使えば、イベント ドメインを最も簡単に説明できます。 Contoso Construction Machinery という会社を経営しているとします。この会社はトラクター、掘削機器、その他の重機を製造しています。 経営の一部として、機器のメンテナンス、システムの正常性、契約の更新などについて顧客にリアルタイムの情報をプッシュで提供します。 この情報はすべて、アプリ、顧客のエンドポイント、顧客が設定したその他のインフラストラクチャなど、さまざまなエンドポイントに送信されます。
イベント ドメインを使用すると、Contoso Construction Machinery を単一の Event Grid エンティティとしてモデル化することができます。 各顧客は、ドメイン内のトピックとして表されます。 認証と認可は Microsoft Entra ID を使用して処理されます。 各顧客は自分のトピックを購読し、自分のイベントを受信できます。 イベント ドメインを介した管理アクセスにより、確実に自分のトピックにのみアクセスできるようになります。
また、すべての顧客イベントを送信できる単一のエンドポイントも提供されます。 Event Grid は、各トピックがそのテナントのスコープ内のイベントのみを認識できるようにします。
イベント ドメインのアクセス管理
イベント ドメインでは、Azure ロールベースのアクセス制御 (Azure RBAC) を通じて、各トピックに対する承認と認証のきめ細かな制御を提供します。 Azure RBAC ロールを使用して、アプリケーション内の各テナントを、アクセス権を付与するトピックのみに制限します。 イベント ドメインでの Azure RBAC は、他の Event Grid や Azure でのマネージド アクセス制御の動作と同じように動作します。 Azure RBAC を使用して、イベント ドメインでカスタム ロール定義を作成して適用します。
イベントドメインの組み込みロール
Event Grid には、イベント ドメインの操作Azure RBAC を容易にする 2 つの組み込みロール定義があります。
- EventGrid EventSubscription 共同作成者
- EventGrid EventSubscription 閲覧者
イベント ドメインのトピックをサブスクライブする必要があるユーザーに、これらのロールを割り当てます。 各ロールの割り当てを、ユーザーがサブスクライブする必要があるトピックのみにスコープを設定します。 これらのロールについては、Event Grid の組み込みロールに関する記事をご覧ください。
イベント ドメイン内のトピックをサブスクライブする
イベント ドメイン内のトピックでイベントをサブスクライブすることは、カスタム トピックでイベント サブスクリプションを作成したり、Azure サービスからイベントをサブスクライブしたりすることと同じです。
重要
ドメイン トピックは、Event Grid の自動管理 リソースです。 ドメイン トピックを最初に作成しなくても、 ドメイン スコープ でイベント サブスクリプションを作成できます。 その場合、Event Grid はユーザーに代わってドメイン トピックを自動的に作成します。 ドメイン トピックを手動で作成することもできます。 この動作により、多数のドメイン トピックを操作するときに管理する必要があるリソースの数が減ります。 ドメイン トピックの最後のサブスクリプションが削除されると、ドメイン トピックが手動で作成されたか自動作成されたかに関係なく、ドメイン トピックも削除されます。
ドメイン スコープのサブスクリプション
イベント ドメインでは、ドメイン スコープサブスクリプションもサポートされます。 イベント ドメイン スコープのイベント サブスクリプションは、イベントが送信されるトピックに関係なく、イベント ドメインに送信されたすべてのイベントを受け取ります。 ドメイン スコープサブスクリプションは、管理と監査のシナリオに役立ちます。
イベント ドメインへの発行
イベント ドメインを作成すると、Event Grid はカスタム トピックのエンドポイントと同様の発行エンドポイントを提供します。 イベント ドメイン内の任意のトピックにイベントを発行するには、 カスタム トピックの場合と同じ方法でイベント をイベント ドメイン エンドポイントにプッシュします。 唯一の違いは、イベントを配信するトピックを指定する必要があるということです。 たとえば、次のイベント配列を発行すると、"id": "1111"を含むイベントがトピック fooに送信され、トピック "id": "2222"にbarイベントが送信されます。
注
イベント ドメインでは、イベントがイベント ドメインに送信され、ドメイン内の各トピックがイベントのコピーを受信するブロードキャスト シナリオはサポートされていません。 イベントを発行する場合、パブリッシャーは、発行先のイベント ドメインでターゲット トピックを指定する必要があります。 同じイベント ペイロードをイベント ドメイン内の複数のトピックに発行するには、パブリッシャーがイベント ペイロードを複製し、各コピーのトピック名を変更し、個別またはバッチとしてイベント ドメイン エンドポイントを使用して Event Grid に発行する必要があります。
クラウド イベント スキーマを使用する場合は、イベント ドメイン内の Event Grid トピックの名前を source プロパティの値として指定します。 次の例では、 source プロパティは最初のイベントに対して foo に設定され、2 番目のイベントに対して bar に設定されています。
別のフィールドを使用してイベント ドメイン内のターゲット トピックを指定するには、イベント ドメインの作成時に入力スキーマ マッピングを構成します。 REST API の場合は、 properties.inputSchemaMapping プロパティを使用して、そのフィールドを properties.topicにマップします。 .NET SDK には、EventGridJsonInputSchemaMappingを使用します。 その他の SDK では、スキーマ マッピングもサポートされています。
[{
"source": "foo",
"id": "1111",
"type": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"time": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"specversion": "1.0"
},
{
"source": "bar",
"id": "2222",
"type": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"time": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"specversion": "1.0"
}]
イベント ドメインは、トピックへの発行を代わりに処理します。 イベントを各トピックに個別に発行する代わりに、すべてのイベントをイベント ドメイン エンドポイントに発行し、Event Grid は各イベントを正しいトピックにルーティングします。
イベントドメインの価格
イベント ドメインでは、Event Grid の他の機能と同じ 操作価格 が使用されます。 操作は、カスタム トピックの場合と同じように、イベント ドメインでも機能します。
- イベント ドメインへのイベントの各イングレスは 1 つの操作です。
- イベントの配信試行はそれぞれ 1 回の操作です。
関連するコンテンツ
イベント ドメインの設定、トピックの作成、イベント サブスクリプションの作成、イベントの発行の詳細については、イベント ドメインの管理に関するページを参照してください。