Dominios de eventos para administrar temas de Event Grid

Un dominio de eventos es una herramienta de administración para un gran número de temas de Event Grid relacionados con la misma aplicación. Se puede considerar un metatema que puede contener miles de temas individuales. Proporciona un punto de conexión de publicación para todos los temas del dominio. Al publicar un evento, el publicador debe especificar el tema de destino en el dominio 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. Consulte la sección Publicación de eventos en un dominio de eventos para más información.

Los dominios también proporcionan control de autenticación y autorización sobre cada tema para que pueda dividir los inquilinos. 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 de eventos multiinquilino a escala.
  • Administrar la autenticación y la autorización.
  • Crear particiones de los temas sin tener que administrar cada uno individualmente.
  • Evitar la publicación individual en cada uno de los puntos de conexión del tema.

Nota:

El dominio de eventos no está pensado para admitir el escenario de difusión en el que se envía un evento a un dominio y cada tema del dominio recibe una copia del evento. Al publicar eventos, el publicador debe especificar el tema de destino en el dominio al que desea publicar. Si el publicador quiere publicar la misma carga del evento en varios temas del dominio, el publicador debe duplicar la carga del evento, cambiar el nombre del tema y publicarlo en Event Grid mediante el punto de conexión de dominio, ya sea individualmente o como lote.

Ejemplo de caso de uso

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 le permiten modelar Contoso Construction Machinery como una única entidad de creación de eventos. 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.

Image showing an example use case for using Event Grid domains.

Administración de acceso

Con un dominio se logra un control de autenticación y autorización específico sobre cada tema por medio del control de acceso basado en rol de Azure (RBAC de Azure). Estos roles pueden usarse para restringir cada arrendatario de la aplicación únicamente a los temas a los que desea concederle 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 integrados

Event Grid tiene dos definiciones de roles integradas que facilitan el trabajo de RBAC de Azure con dominios de eventos. Estos roles son los de colaborador de EventGrid EventSubscription y lector de EventGrid EventSubscription. Estos roles se asignan a los usuarios que necesitan suscribirse a temas en el dominio de eventos. El ámbito de la asignación de roles se limita a solo el tema al que necesitan suscribirse los usuarios. Para información sobre estos roles, consulte Roles integrados para Event Grid.

Suscribirse a temas

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

El tema de dominio se considera un recurso autoadministrado en Event Grid. Puede crear una suscripción de eventos en el ámbito de dominio sin crear el tema de dominio. En este caso, Event Grid crea el tema de dominio en su nombre de forma automática. Por supuesto, aún puede optar por crear el tema de dominio manualmente. Este comportamiento le ayuda a tener que preocuparse por un recurso menos al tratar con un gran número de temas de dominio. Cuando se elimina la última suscripción a un tema de dominio, dicho tema también se elimina, sin tener en cuenta si se creó de forma manual o automática.

Suscripciones del ámbito de dominio

Los dominios de eventos también permiten suscripciones de ámbito de dominio. Una suscripción a eventos en un dominio de eventos recibe todos los eventos enviados al dominio, independientemente del tema al que se envían los eventos. Las suscripciones del ámbito de dominio pueden ser útiles para la administración y la auditoría.

Publicación en un dominio de eventos

Cuando se crea un dominio de eventos, se le asigna un punto de conexión de publicación igual que si hubiera creado un tema de Event Grid. Para publicar eventos en cualquier tema de un dominio de eventos, inserte los eventos en el punto de conexión del dominio igual que como lo haría para un tema personalizado. La única diferencia es que debe especificar el tema en el que quiere que se entregue el evento. Por ejemplo, la siguiente matriz de eventos de publicación enviará eventos con "id": "1111" al tema foo, mientras que el evento con "id": "2222" se enviaría al tema bar:

Al usar el esquema de eventos en la nube, especifique el nombre del tema de Event Grid en el dominio como un valor para 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.

Si quiere usar un campo diferente para especificar el tema previsto en el dominio, especifique la asignación de esquemas de entrada al crear el dominio. Por ejemplo, si usa la API REST, use la propiedad properties.inputSchemaMapping cuando asigne ese campo a properties.topic. Si usa el SDK de .NET, utilice 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 los eventos en cada tema que administra individualmente, puede publicar todos los eventos en el punto de conexión del dominio. Event Grid garantiza que cada evento se envía al tema correcto.

Precios

Los dominios de eventos usan el mismo precio por operaciones que el resto de 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, y cada intento de entrega de un evento es una operación.

Pasos siguientes

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.