Esquema CloudEvents v1.0 con Azure Event Grid

Azure Event Grid admite de forma nativa eventos de la implementación de JSON de CloudEvents v1.0 y el enlace del protocolo HTTP. CloudEvents es una especificación abierta para la descripción de datos de eventos.

CloudEvents simplifica la interoperabilidad al proporcionar un esquema de eventos común para la publicación y el consumo de eventos basados en la nube. Este esquema permite herramientas uniformes, formas estándar de enrutar y administrar eventos y formas universales de deserializar el esquema de eventos externo. Con un esquema común, puede integrar más fácilmente el trabajo entre plataformas.

En la compilación de CloudEvents participan varios colaboradores, entre ellos Microsoft, mediante Cloud Native Compute Foundation. Actualmente está disponible en versión 1.0.

En este artículo se describe el esquema CloudEvents con Event Grid.

Evento de ejemplo con el esquema CloudEvents

El siguiente es un ejemplo de un evento de Azure Blob Storage con el formato de CloudEvents:

{
    "specversion": "1.0",
    "type": "Microsoft.Storage.BlobCreated",  
    "source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-account}",
    "id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
    "time": "2019-11-18T15:13:39.4589254Z",
    "subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",    
    "data": {
        "api": "PutBlockList",
        "clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
        "requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
        "eTag": "0x8D76C39E4407333",
        "contentType": "image/png",
        "contentLength": 30699,
        "blobType": "BlockBlob",
        "url": "https://gridtesting.blob.core.windows.net/testcontainer/{new-file}",
        "sequencer": "000000000000000000000000000099240000000000c41c18",
        "storageDiagnostics": {
            "batchId": "681fe319-3006-00a8-0022-9e7cde000000"
        }
    }
}

Una descripción detallada de los campos disponibles, sus tipos y definiciones en CloudEvents v1.0 se encuentra disponible aquí.

Los valores de encabezados de los eventos proporcionados en el esquema de CloudEvents y el esquema de Event Grid son los mismos excepto para content-type. En el esquema de CloudEvents, ese valor de encabezado es "content-type":"application/cloudevents+json; charset=utf-8". En el esquema de Event Grid, ese valor de encabezado es "content-type":"application/json; charset=utf-8".

Event Grid para CloudEvents

Puede usar Event Grid con eventos de entrada y salida de esquema CloudEvents. CloudEvents se puede usar con eventos del sistema, como eventos de Blob Storage y eventos de IoT Hub, y con eventos personalizados. Además de admitir CloudEvents, Event Grid admite un formato de evento de Event Grid de su propiedad, no extensible, pero totalmente funcional. En la tabla siguiente se describe la transformación admitida al usar los formatos CloudEvents y Event Grid como esquema de entrada en temas y como esquema de salida en suscripciones de eventos. No se puede usar un esquema de salida de Event Grid al usar CloudEvents como esquema de entrada porque CloudEvents admite atributos de extensión que no son compatibles con el esquema de Event Grid.

Esquema de entrada Esquema de salida
Formato de CloudEvents Formato de CloudEvents
Formato de Event Grid Formato de CloudEvents
Formato de Event Grid Formato de Event Grid

Con todos los esquemas de eventos, Event Grid exige la validación cuando se realiza una publicación en un tema de Event Grid y cuando se crea una suscripción de eventos. Para más información, vea Event Grid security and authentication (Seguridad y autenticación de Event Grid).

Pasos siguientes

Consulte Uso del esquema CloudEvents v1.0 con Event Grid.