Share via


Publicación de eventos en temas personalizados de Azure Event Grid mediante claves de acceso

En este artículo se describe cómo publicar un evento en un tema personalizado mediante una clave de acceso. Muestra el formato de los datos de publicación y eventos. El Acuerdo de Nivel de Servicio (SLA) solo se aplica a las publicaciones que coinciden con el formato esperado.

Nota:

La autenticación de Microsoft Entra proporciona una compatibilidad de autenticación superior a la que ofrece la autenticación con claves de acceso o tokens de firma de acceso compartido (SAS). Con la autenticación de Microsoft Entra, la identidad se valida con el proveedor de identidades de Microsoft Entra. Si usa la autenticación de Microsoft Entra, como desarrollador, no tiene que controlar las claves del código. También se beneficia de todas las características de seguridad integradas en la plataforma de identidad de Microsoft, como el acceso condicional, que puede ayudarle a mejorar la postura de seguridad de la aplicación. Para más información, consulte el artículo sobre la autenticación de clientes de publicación mediante Microsoft Entra ID.

Punto de conexión

Al enviar el método HTTP POST a un tema personalizado, use el formato del URI: https://<topic-endpoint>?api-version=2018-01-01. Por ejemplo, un URI válido es: https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01. Para obtener el punto de conexión de un tema personalizado con la CLI de Azure, use:

az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"

Para obtener el punto de conexión de un tema personalizado con Azure PowerShell, use:

(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint

En la solicitud, incluya un valor de encabezado denominado aeg-sas-key que contenga una clave para la autenticación. Por ejemplo, un valor de encabezado válido es aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx. Para obtener la clave de un tema personalizado con la CLI de Azure, use:

az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"

Para obtener la clave de un tema personalizado con PowerShell, use:

(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1

Datos de evento

Para los temas personalizados, los datos de nivel superior contienen los mismos campos que los eventos estándar definidos por los recursos. Una de esas propiedades es una propiedad data que contiene propiedades únicas del tema personalizado. Como publicador de eventos, debe determinar las propiedades del objeto de datos. Este es el esquema:

[
  {
    "id": string,    
    "eventType": string,
    "subject": string,
    "eventTime": string-in-date-time-format,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string
  }
]

Para obtener una descripción de estas propiedades, vea Esquema de eventos de Azure Event Grid. Al publicar eventos en un tema de Event Grid, la matriz puede tener un tamaño total de hasta 1 MB. El tamaño máximo permitido para un evento es también de 1 MB. Los eventos de más de 64 KB se cobran en incrementos de 64 KB. Al recibir eventos en un lote, el número de eventos máximo permitido es de 5000 por lote.

Por ejemplo, un esquema de datos de evento válido es:

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0"
}]

Response

Después de publicar en el punto de conexión del tema, recibirá una respuesta. La respuesta es un código de respuesta HTTP estándar. Algunas respuestas comunes son:

Resultado Response
Correcto 200 OK
Los datos del evento tienen un formato incorrecto 400 - Solicitud incorrecta
Clave de acceso no válida 401 No autorizado
Punto de conexión incorrecto 404 No encontrado
La matriz o el evento superan los límites de tamaño 413 Carga demasiado grande

Si hay errores, el cuerpo del mensaje tiene el formato siguiente:

{
    "error": {
        "code": "<HTTP status code>",
        "message": "<description>",
        "details": [{
            "code": "<HTTP status code>",
            "message": "<description>"
    }]
  }
}

Pasos siguientes