Grupo de recursos de Azure como origen de Event Grid

En este artículo se proporcionan las propiedades y los esquemas de los eventos de grupo de recursos. Para una introducción a los esquemas de eventos, consulte Esquema de eventos de Azure Event Grid.

Las suscripciones y los grupos de recursos de Azure emiten los mismos tipos de eventos. Los tipos de evento están relacionados con acciones o cambios en los recursos. La diferencia principal es que los grupos de recursos emiten eventos para los recursos en el grupo de recursos y las suscripciones de Azure emiten eventos para los recursos a través de la suscripción.

Los eventos de recursos se crean para las operaciones PUT, PATCH, POST y DELETE que se envían a management.azure.com. Las operaciones GET no crean eventos. Las operaciones enviadas al plano de datos (como myaccount.blob.core.windows.net) no crean eventos. Los eventos de acción proporcionan datos de evento para operaciones como enumerar las claves para un recurso.

Cuando se suscribe a eventos para un grupo de recursos, el punto de conexión recibe todos los eventos de ese grupo de recursos. Los eventos pueden incluir el evento que deseas ver, como la actualización de una máquina virtual, pero también los eventos que no son importantes para ti, como escribir una nueva entrada en el historial de implementación. Puede recibir todos los eventos en el punto de conexión y escribir código que procese los eventos que quiere administrar. O bien, puede establecer un filtro al crear la suscripción al evento.

Para controlar los eventos mediante programación, puede ordenarlos examinando el valor operationName. Por ejemplo, el punto de conexión de eventos podría procesar solamente eventos para las operaciones que son iguales a Microsoft.Compute/virtualMachines/write o Microsoft.Storage/storageAccounts/write.

El asunto del evento es el identificador de recurso correspondiente al recurso que es el destino de la operación. Para filtrar eventos para un recurso, proporcione ese identificador de recurso creando la suscripción de eventos. Para filtrar por un tipo de recurso, use un valor en el formato siguiente: /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Compute/virtualMachines

Tipos de eventos disponibles

Los grupos de recursos emiten eventos de administración desde Azure Resource Manager, como cuando se crea una máquina virtual o se elimina una cuenta de almacenamiento.

Tipo de evento Descripción
Microsoft.Resources.ResourceActionCancel Se genera cuando se cancela la acción en el recurso.
Microsoft.Resources.ResourceActionFailure Se genera cuando hay un error en la acción en el recurso.
Microsoft.Resources.ResourceActionSuccess Se genera cuando la acción en el recurso es correcta.
Microsoft.Resources.ResourceDeleteCancel Se genera cuando se cancela la operación de eliminación. Este evento sucede cuando se cancela la implementación de una plantilla.
Microsoft.Resources.ResourceDeleteFailure Se genera cuando hay un error en la operación de eliminación.
Microsoft.Resources.ResourceDeleteSuccess Se genera cuando la operación de eliminación es correcta.
Microsoft.Resources.ResourceWriteCancel Se genera cuando se cancela la operación de creación o actualización.
Microsoft.Resources.ResourceWriteFailure Se genera cuando hay un error en la operación de creación o actualización.
Microsoft.Resources.ResourceWriteSuccess Se genera cuando la operación de creación o actualización es correcta.

Evento de ejemplo

En el ejemplo siguiente se muestra el esquema para un evento ResourceWriteSuccess. Se usa el mismo esquema para eventos ResourceWriteFailure y ResourceWriteCancel con valores diferentes para eventType.

[{
  "subject": "/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
  "source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}",
  "type": "Microsoft.Resources.ResourceWriteSuccess",
  "time": "2018-07-19T18:38:04.6117357Z",
  "id": "4db48cba-50a2-455a-93b4-de41a3b5b7f6",
  "data": {
    "authorization": {
      "scope": "/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
      "action": "Microsoft.Storage/storageAccounts/write",
      "evidence": {
        "role": "Subscription Admin"
      }
    },
    "claims": {
      "aud": "{audience-claim}",
      "iss": "{issuer-claim}",
      "iat": "{issued-at-claim}",
      "nbf": "{not-before-claim}",
      "exp": "{expiration-claim}",
      "_claim_names": "{\"groups\":\"src1\"}",
      "_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
      "http://schemas.microsoft.com/claims/authnclassreference": "1",
      "aio": "{token}",
      "http://schemas.microsoft.com/claims/authnmethodsreferences": "rsa,mfa",
      "appid": "{ID}",
      "appidacr": "2",
      "http://schemas.microsoft.com/2012/01/devicecontext/claims/identifier": "{ID}",
      "e_exp": "{expiration}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "{last-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "{first-name}",
      "ipaddr": "{IP-address}",
      "name": "{full-name}",
      "http://schemas.microsoft.com/identity/claims/objectidentifier": "{ID}",
      "onprem_sid": "{ID}",
      "puid": "{ID}",
      "http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "{ID}",
      "http://schemas.microsoft.com/identity/claims/tenantid": "{ID}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "{user-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "{user-name}",
      "uti": "{ID}",
      "ver": "1.0"
    },
    "correlationId": "{ID}",
    "resourceProvider": "Microsoft.Storage",
    "resourceUri": "/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
    "operationName": "Microsoft.Storage/storageAccounts/write",
    "status": "Succeeded",
    "subscriptionId": "{subscription-id}",
    "tenantId": "{tenant-id}"
  },

  "specversion": "1.0"
}]

En el ejemplo siguiente se muestra el esquema para un evento ResourceDeleteSuccess. Se usa el mismo esquema para eventos ResourceDeleteFailure y ResourceDeleteCancel con valores diferentes para eventType.

[{
  "subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
  "source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}",
  "type": "Microsoft.Resources.ResourceDeleteSuccess",
  "time": "2018-07-19T19:24:12.763881Z",
  "id": "19a69642-1aad-4a96-a5ab-8d05494513ce",
  "data": {
    "authorization": {
      "scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
      "action": "Microsoft.Storage/storageAccounts/delete",
      "evidence": {
        "role": "Subscription Admin"
      }
    },
    "claims": {
      "aud": "{audience-claim}",
      "iss": "{issuer-claim}",
      "iat": "{issued-at-claim}",
      "nbf": "{not-before-claim}",
      "exp": "{expiration-claim}",
      "_claim_names": "{\"groups\":\"src1\"}",
      "_claim_sources": "{\"src1\":{\"endpoint\":\"{URI}\"}}",
      "http://schemas.microsoft.com/claims/authnclassreference": "1",
      "aio": "{token}",
      "http://schemas.microsoft.com/claims/authnmethodsreferences": "rsa,mfa",
      "appid": "{ID}",
      "appidacr": "2",
      "http://schemas.microsoft.com/2012/01/devicecontext/claims/identifier": "{ID}",
      "e_exp": "262800",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname": "{last-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname": "{first-name}",
      "ipaddr": "{IP-address}",
      "name": "{full-name}",
      "http://schemas.microsoft.com/identity/claims/objectidentifier": "{ID}",
      "onprem_sid": "{ID}",
      "puid": "{ID}",
      "http://schemas.microsoft.com/identity/claims/scope": "user_impersonation",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "{ID}",
      "http://schemas.microsoft.com/identity/claims/tenantid": "{ID}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "{user-name}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn": "{user-name}",
      "uti": "{ID}",
      "ver": "1.0"
    },
    "correlationId": "{ID}",
    "httpRequest": {
      "clientRequestId": "{ID}",
      "clientIpAddress": "{IP-address}",
      "method": "DELETE",
      "url": "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}?api-version=2018-02-01"
    },
    "resourceProvider": "Microsoft.Storage",
    "resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-name}",
    "operationName": "Microsoft.Storage/storageAccounts/delete",
    "status": "Succeeded",
    "subscriptionId": "{subscription-id}",
    "tenantId": "{tenant-id}"
  },
  "specversion": "1.0"
}]

En el ejemplo siguiente se muestra el esquema para un evento ResourceActionSuccess. Se usa el mismo esquema para eventos ResourceActionFailure y ResourceActionCancel con valores diferentes para eventType.

[{   
  "subject": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
  "source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}",
  "type": "Microsoft.Resources.ResourceActionSuccess",
  "time": "2018-10-08T22:46:22.6022559Z",
  "id": "{ID}",
  "data": {
    "authorization": {
      "scope": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
      "action": "Microsoft.EventHub/namespaces/AuthorizationRules/listKeys/action",
      "evidence": {
        "role": "Contributor",
        "roleAssignmentScope": "/subscriptions/{subscription-id}",
        "roleAssignmentId": "{ID}",
        "roleDefinitionId": "{ID}",
        "principalId": "{ID}",
        "principalType": "ServicePrincipal"
      }     
    },
    "claims": {
      "aud": "{audience-claim}",
      "iss": "{issuer-claim}",
      "iat": "{issued-at-claim}",
      "nbf": "{not-before-claim}",
      "exp": "{expiration-claim}",
      "aio": "{token}",
      "appid": "{ID}",
      "appidacr": "2",
      "http://schemas.microsoft.com/identity/claims/identityprovider": "{URL}",
      "http://schemas.microsoft.com/identity/claims/objectidentifier": "{ID}",
      "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "{ID}",       "http://schemas.microsoft.com/identity/claims/tenantid": "{ID}",
      "uti": "{ID}",
      "ver": "1.0"
    },
    "correlationId": "{ID}",
    "httpRequest": {
      "clientRequestId": "{ID}",
      "clientIpAddress": "{IP-address}",
      "method": "POST",
      "url": "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey/listKeys?api-version=2017-04-01"
    },
    "resourceProvider": "Microsoft.EventHub",
    "resourceUri": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventHub/namespaces/{namespace}/AuthorizationRules/RootManageSharedAccessKey",
    "operationName": "Microsoft.EventHub/namespaces/AuthorizationRules/listKeys/action",
    "status": "Succeeded",
    "subscriptionId": "{subscription-id}",
    "tenantId": "{tenant-id}"
  },
  "specversion": "1.0"
}]

Propiedades de evento

Un evento tiene los siguientes datos de nivel superior:

Propiedad Tipo Description
source string Ruta de acceso completa a los recursos del origen del evento. En este campo no se puede escribir. Event Grid proporciona este valor.
subject string Ruta al asunto del evento definida por el anunciante.
type string Uno de los tipos de eventos registrados para este origen de eventos.
time string La hora de generación del evento en función de la hora UTC del proveedor.
id string Identificador único para el evento
data object Datos de eventos de grupo de recursos.
specversion string Versión de especificación del esquema CloudEvents.

El objeto data tiene las siguientes propiedades:

Propiedad Tipo Description
authorization object Autorización solicitada para la operación.
claims object Propiedades de las notificaciones. Para más información, consulte la especificación de JWT.
correlationId string Identificador de operación para solucionar el problema.
httpRequest object Detalles de la operación. Este objeto solo se incluye al actualizar un recurso existente o eliminar un recurso.
resourceProvider string Proveedor de recursos para la operación.
resourceUri string URI del recurso en la operación.
operationName string Operación que se realizó.
status string Estado de la operación.
subscriptionId string Identificador de suscripción del recurso.
tenantId string Identificador de inquilino del recurso.

Tutoriales y procedimientos

Título Descripción
Tutorial: supervisión de los cambios en máquinas virtuales con Azure Event Grid y Logic Apps Una aplicación lógica supervisa los cambios realizados en una máquina virtual y envía mensajes de correo electrónico sobre dichos cambios.
CLI de Azure: suscripción a eventos para un grupo de recursos Script de ejemplo que se suscribe a eventos para un grupo de recursos. Envía eventos a un webhook.
CLI de Azure: suscripción a eventos de un grupo de recursos y filtrado de los eventos de un recurso Script de ejemplo que se suscribe a eventos para un grupo de recursos y filtra los eventos para un recurso.
PowerShell: suscripción a eventos para un grupo de recursos Script de ejemplo que se suscribe a eventos para un grupo de recursos. Envía eventos a un webhook.
PowerShell: suscripción a eventos para un grupo de recursos y filtrado de los eventos para un recurso Script de ejemplo que se suscribe a eventos para un grupo de recursos y filtra los eventos para un recurso.
Plantilla de Resource Manager: suscripción de recursos Se suscribe a eventos para una suscripción o grupo de recursos de Azure. Envía eventos a un webhook.

Pasos siguientes