Share via


Administrar temas y publicar eventos con dominios de eventos

En este artículo se muestra cómo:

  • Crear un dominio de Event Grid
  • Suscribirse a temas de Event Grid
  • Enumeración de claves
  • Publicar eventos en un dominio

Para más información acerca de dominios de eventos, consulte Dominios de eventos para administrar temas de Event Grid.

Crear un dominio de eventos

Para administrar grandes conjuntos de temas, cree un dominio de eventos.

az eventgrid domain create \
  -g <my-resource-group> \
  --name <my-domain-name> \
  -l <location>

Una creación correcta devolverá los siguientes valores:

{
  "endpoint": "https://<my-domain-name>.westus2-1.eventgrid.azure.net/api/events",
  "id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>",
  "inputSchema": "EventGridSchema",
  "inputSchemaMapping": null,
  "location": "westus2",
  "name": "<my-domain-name>",
  "provisioningState": "Succeeded",
  "resourceGroup": "<my-resource-group>",
  "tags": null,
  "type": "Microsoft.EventGrid/domains"
}

Anote endpoint y id, ya que se requieren para administrar el dominio y publicar eventos.

Administración del acceso a temas

La administración de acceso a temas se realiza mediante asignación de roles. La asignación de roles usa el control de acceso basado en roles de Azure para limitar las operaciones en recursos de Azure a los usuarios autorizados en un determinado ámbito.

Event Grid tiene dos roles integrados, que puede utilizar para asignar acceso a determinados usuarios a varios temas dentro de un dominio. Estos roles son EventGrid EventSubscription Contributor (Preview), que permite la creación y eliminación de suscripciones, y EventGrid EventSubscription Reader (Preview), que permite solo enumerar las suscripciones a eventos.

El siguiente comando de la CLI de Azure limita alice@contoso.com para crear y eliminar suscripciones de eventos solo en el tema demotopic1:

az role assignment create \
  --assignee alice@contoso.com \
  --role "EventGrid EventSubscription Contributor (Preview)" \
  --scope /subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1

Para más información sobre la administración de acceso para las operaciones de Event Grid, consulte Autenticación y seguridad de Event Grid.

Creación de temas y suscripciones

El servicio Event Grid crea y administra automáticamente el tema correspondiente en un dominio basado en la llamada para crear una suscripción de eventos para un tema de dominio. No hay ningún paso más para crear un tema en un dominio. De forma similar, cuando se elimina la última suscripción del evento para un tema, también se elimina el tema.

Suscribirse a un tema en un dominio es lo mismo que suscribirse a cualquier otro recurso de Azure. Para el identificador de recurso de origen, especifique el identificador de dominio de evento que se devolvió al crear el dominio anteriormente. Para especificar el tema al que quiere suscribirse, agregue /topics/<my-topic> al final del identificador del recurso de origen. Para crear una suscripción de eventos del ámbito de dominio que reciba todos los eventos del dominio, especifique el identificador de dominio de evento sin especificar ningún tema.

Normalmente, el usuario al que concedió acceso en la sección anterior crearía la suscripción. Para simplificar este artículo, cree la suscripción.

az eventgrid event-subscription create \
  --name <event-subscription> \
  --source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1" \
  --endpoint https://contoso.azurewebsites.net/api/updates

Si necesita un punto de conexión de prueba al que suscribir sus eventos, siempre puede implementar una aplicación web precompilada que muestre los eventos entrantes. Puede enviar los eventos a su sitio web de prueba en https://<your-site-name>.azurewebsites.net/api/updates.

Button to deploy the Resource Manager template to Azure.

Los permisos que se establecen para un tema se almacenan en Microsoft Entra ID y se deben eliminar explícitamente. La eliminación de una suscripción de eventos no revoca el acceso de un usuario para crear suscripciones de eventos si tiene acceso de escritura en un tema.

Publicar eventos en un dominio de Event Grid

Publicar eventos en un dominio es lo mismo que publicar en un tema personalizado. Sin embargo, en lugar de publicar en el tema personalizado, debe publicar todos los eventos en el punto de conexión del dominio. En los datos del evento JSON, especifique el tema al que desea que vayan los eventos. La siguiente matriz de eventos enviará eventos con "id": "1111" al tema demotopic1, mientras que el evento con "id": "2222" se enviará al tema demotopic2:

[{
  "topic": "demotopic1",
  "id": "1111",
  "eventType": "maintenanceRequested",
  "subject": "myapp/vehicles/diggers",
  "eventTime": "2018-10-30T21:03:07+00:00",
  "data": {
    "make": "Contoso",
    "model": "Small Digger"
  },
  "dataVersion": "1.0"
},
{
  "topic": "demotopic2",
  "id": "2222",
  "eventType": "maintenanceCompleted",
  "subject": "myapp/vehicles/tractors",
  "eventTime": "2018-10-30T21:04:12+00:00",
  "data": {
    "make": "Contoso",
    "model": "Big Tractor"
  },
  "dataVersion": "1.0"
}]

Para obtener el punto de conexión del dominio con la CLI de Azure, use

az eventgrid domain show \
  -g <my-resource-group> \
  -n <my-domain>

Para obtener las claves para un dominio, use:

az eventgrid domain key list \
  -g <my-resource-group> \
  -n <my-domain>

Después, use su método favorito para crear una solicitud HTTP POST para publicar los eventos en el dominio de Event Grid.

Nota:

Para obtener ejemplos que usan SDK de lenguaje de programación para publicar eventos en un dominio de Event Grid, use los vínculos siguientes:

Buscar listas de temas o suscripciones

Para poder buscar y administrar un gran número de temas o suscripciones, las API de Event Grid admiten las listas y la paginación.

Uso de CLI

Por ejemplo, el comando siguiente muestra todos los temas cuyo nombre contiene mytopic.

az eventgrid topic list --odata-query "contains(name, 'mytopic')"

Para obtener más información acerca de este comando, vea az eventgrid topic list.

Pasos siguientes