Dominios de eventos en Azure Event Grid

Un dominio de eventos en Azure Event Grid proporciona un único punto de conexión de publicación para miles de temas individuales relacionados con la misma aplicación. Puede considerar un dominio de eventos como un metatema que contiene muchos temas individuales. Al publicar un evento, el publicador debe especificar el tema de destino en el dominio de eventos al que desea publicar. El publicador puede enviar una matriz o un lote de eventos en los que los eventos se envían a distintos temas del dominio de eventos. Para obtener más información, consulte Publicar en un dominio de eventos.

Los dominios de eventos también le permiten controlar la autenticación y la autorización para cada tema, de modo que pueda aislar a sus clientes. En este artículo se describe cómo usar dominios de eventos para administrar el flujo de eventos personalizados a sus diversas organizaciones empresariales, clientes o aplicaciones. Use dominios de eventos para:

  • Administrar arquitecturas controladas por eventos multiinquilinos a escala.
  • Administrar la autenticación y la autorización.
  • Divida sus temas sin tener que gestionar cada uno por separado.
  • Evitar la publicación individual en cada uno de los puntos de conexión del tema.

Caso de uso de ejemplo del dominio de eventos

Los dominios de eventos se explican más fácilmente con un ejemplo. Supongamos que dirige Contoso Construction Machinery, donde se encarga de fabricar tractores, equipos de excavación y otra maquinaria pesada. Entre las tareas de la empresa se incluye el envío de información en tiempo real a los clientes sobre el mantenimiento de los equipos, el estado de los sistemas y las actualizaciones de contratos. Toda esta información llega a diferentes puntos de conexión, entre los que están su aplicación, los puntos de conexión de los clientes y otras infraestructuras que estos han configurado.

Los dominios de eventos permiten modelar Contoso Construction Machinery como una sola entidad de Event Grid. Cada uno de los clientes se representa como un tema dentro del dominio. La autenticación y la autorización se controlan mediante Microsoft Entra ID. Cada uno de los clientes puede suscribirse a su tema para recibir eventos relacionados. El acceso administrado a través del dominio de eventos garantiza que solo pueden acceder a su tema.

También le ofrece un punto de conexión único, en el que puede publicar todos sus eventos de cliente. Event Grid se encarga de asegurarse de que cada tema solo esté al tanto de los eventos asignados a su inquilino.

Imagen que muestra un caso de ejemplo para usar dominios de Event Grid.

Administración de acceso para dominios de eventos

Los dominios de eventos proporcionan un control pormenorizado de la autorización y la autenticación sobre cada tema mediante el control de acceso basado en roles de Azure (Azure RBAC). Use los roles de Azure RBAC para restringir cada inquilino de su aplicación únicamente a los temas a los que quiera concederles acceso. RBAC de Azure en dominios de eventos funciona del mismo modo que el control de acceso administrado en el resto de Event Grid y Azure. Use RBAC de Azure para crear y aplicar definiciones de roles personalizadas en dominios de eventos.

Roles predefinidos para dominios de eventos

Event Grid tiene dos definiciones de roles integradas que facilitan Azure RBAC para trabajar con dominios de eventos:

  • Colaborador de EventGrid EventSubscription
  • Lector de EventGrid EventSubscription

Asigne estos roles a los usuarios que necesitan suscribirse a temas del dominio de eventos. Limite cada asignación de rol solo al tema al que el usuario necesita suscribirse. Para información sobre estos roles, consulte Roles integrados para Event Grid.

Suscribirse a temas de un dominio de eventos

Suscribirse a eventos de un tema dentro de un dominio de eventos es lo mismo que crear una suscripción a eventos en un tema personalizado o suscribirse a un evento desde un servicio de Azure.

Importante

Un tema de dominio es un recurso administrado automáticamente en Event Grid. Puede crear una suscripción de eventos en el ámbito de dominio sin crear primero el tema de dominio. En ese caso, Event Grid crea automáticamente el tema de dominio en su nombre. También puede optar por crear manualmente el tema de dominio. Este comportamiento reduce el número de recursos que tiene que administrar al trabajar con un gran número de temas de dominio. Cuando se elimina la última suscripción a un tema de dominio, también se elimina el tema de dominio, independientemente de si el tema de dominio se creó manualmente o se creó automáticamente.

Suscripciones de ámbito de dominio

Los dominios de eventos también admiten suscripciones de ámbito de dominio. Una suscripción de eventos en el ámbito del dominio de eventos recibe todos los eventos enviados al dominio de eventos, independientemente del tema al que se envíen los eventos. Las suscripciones de ámbito de dominio son útiles para escenarios de administración y auditoría.

Publicar en un dominio de eventos

Al crear un dominio de eventos, Event Grid proporciona un punto de conexión de publicación similar al punto de conexión de un tema personalizado. Para publicar eventos en cualquier tema de un dominio de eventos, inserte los eventos en el punto de conexión del dominio de eventos de la misma manera que lo haría para un tema personalizado. La única diferencia es que debe especificar el tema al que se debe entregar el evento. Por ejemplo, la publicación de la siguiente matriz de eventos envía el evento con "id": "1111" al tema foo y al evento con "id": "2222" al tema bar.

Nota:

Los dominios de eventos no admiten escenarios de difusión en los que se envía un evento a un dominio de eventos y cada tema del dominio recibe una copia del evento. Al publicar eventos, el publicador debe especificar el tema de destino en el dominio de eventos al que desea publicar. Para publicar la misma carga de eventos en varios temas del dominio de eventos, el publicador debe duplicar la carga del evento, cambiar el nombre del tema para cada copia y publicarlos en Event Grid mediante el punto de conexión del dominio de eventos, ya sea individualmente o como un lote.

Al usar el esquema de CloudEvents, especifique el nombre del tema de Event Grid en el dominio de eventos como valor de la propiedad source. En el ejemplo siguiente, la propiedad source se establece en foo para el primer evento y en bar para el segundo evento.

Para usar un campo diferente para especificar el tema de destino en el dominio de eventos, configure la asignación de esquemas de entrada al crear el dominio de eventos. Para la API REST, use la propiedad properties.inputSchemaMapping para asignar ese campo a properties.topic. Para el SDK de .NET, use EventGridJsonInputSchemaMapping. Otros SDK también admiten la asignación de esquemas.

[{
  "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"
}]

Los dominios de eventos controlan la publicación de temas por usted. En lugar de publicar eventos en cada tema individualmente, se publican todos los eventos en el punto de conexión del dominio de eventos y Event Grid enruta cada evento al tema correcto.

Precios del dominio de eventos

Los dominios de eventos usan los mismos precios de operaciones que otras características de Event Grid. Las operaciones funcionan igual en dominios de eventos que en temas personalizados:

  • Cada entrada de un evento a un dominio de eventos es una operación.
  • Cada intento de entrega de un evento es una operación.

Para información acerca de cómo configurar dominios de eventos, crear temas, crear suscripciones a eventos y publicar eventos, consulte Administración de dominios de eventos.