CloudEvents (cloudevents.io) es una especificación para describir datos de eventos de forma común. La especificación está bajo la supervisión de la Cloud Native Computing Foundation (CNCF) y está organizada por el grupo de trabajo Serverless de la CNCF.
Eventarc envía eventos al receptor de eventos en formato CloudEvents a través de una solicitud HTTP. El destino, por ejemplo, el servicio Workflows, convierte el evento en un objeto JSON (siguiendo la especificación de CloudEvents) y lo transfiere a la ejecución del flujo de trabajo como argumento de tiempo de ejecución.
Formato de carga útil de JSON
El servicio de destino recibe eventos de los enrutadores de eventos y los formatea según el formato de evento JSON para CloudEvents versión 1.0.1 con los siguientes atributos de CloudEvents:
Atributo | Descripción | Ejemplo |
---|---|---|
datos | La carga útil de los datos del evento. | { "subscription": "projects/my-project/subscriptions/my-sub", "message": { "attributes": { "attr1":"attr1-value" }, "data": "aGVsbG8gd29ybGQ=", "messageId": "2070443601311540", "publishTime":"2021-02-26T19:13:55.749Z" } } |
datacontenttype | El tipo de datos que se ha transferido | application/json |
id | Identificador único del evento. | 2070443601311540 |
fuente | La fuente del evento | //pubsub.googleapis.com/projects/my-project/topics/my-topic |
specversion | Versión de la especificación de CloudEvents usada en este evento. | 1.0 |
tipo | El tipo de datos de evento | google.cloud.pubsub.topic.v1.messagePublished |
Tiempo | Hora de generación del evento, en formato RFC 3339 (opcional) | 2020-12-20T13:37:33.647Z |
Según el tipo de evento, el formato de la carga útil es el siguiente:
Registros de auditoría de Cloud
El argumento de tiempo de ejecución es un objeto JSON que detalla el evento de los registros de auditoría de Cloud. En este documento, consulta el ejemplo de eventos comunes.
En el objeto JSON, puedes encontrar los valores resourceName
, serviceName
y methodName
. Para obtener más información, consulta Determinar filtros de eventos para registros de auditoría de Cloud.
Los eventos de tipo google.cloud.audit.log.v1.written
tienen el siguiente formato:
{ "data":{ EVENT_DATA }, "datacontenttype": "application/json; charset=utf-8", "id": "MESSAGE_ID", "source": "//cloudaudit.googleapis.com/projects/PROJECT_ID/logs/data_access", "specversion": "1.0", "type": "google.cloud.audit.log.v1.written", "time": "EVENT_GENERATION_TIME", "dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json", "methodName": "jobservice.jobcompleted", "resourceName": "projects/my-project/jobs/bqjob_r3ac45813612fa2d6_0000017d591922c9_1", "serviceName": "bigquery.googleapis.com", "subject": "bigquery.googleapis.com/projects/my-project/jobs/bqjob_r3ac45813612fa2d6_0000017d591922c9_1" }
EVENT_DATA
: el contenido del mensaje decodificado en formato JSON. Para obtener más información, consulta la sección Eventos comunes de este documento.MESSAGE_ID
,EVENT_GENERATION_TIME
: generado por el sistema.PROJECT_ID
: tu ID de proyecto Google Cloud .dataschema
,methodName
,resourceName
,serviceName
:subject
: atributos específicos del tipo de evento.
Cloud Storage
Los argumentos de tiempo de ejecución son cambios en Cloud Storage. En el campo data
, puedes ver el cambio en el segmento de Cloud Storage. En este documento, consulta el ejemplo de eventos comunes.
Los eventos de tipo google.cloud.storage.object.v1.finalized
tienen el siguiente formato:
{ "data":{ EVENT_DATA }, "datacontenttype": "application/json", "id": "MESSAGE_ID", "source": "//storage.googleapis.com/projects/_/buckets/BUCKET_NAME", "specversion": "1.0", "type": "google.cloud.storage.object.v1.finalized", "time": "EVENT_GENERATION_TIME", "subject": "objects/my-file.txt" }
EVENT_DATA
: el contenido del mensaje decodificado en formato JSON. Para obtener más información, consulta la sección Eventos comunes de este documento.MESSAGE_ID
,EVENT_GENERATION_TIME
: generado por el sistema.BUCKET_NAME
: el nombre del segmento de Cloud Storage que se actualiza.subject
: atributo específico del tipo de evento.
Pub/Sub
El argumento de tiempo de ejecución es un mensaje de inserción de Pub/Sub. En el campo data
puedes encontrar el mensaje como una cadena codificada en Base64. En este documento, consulta el ejemplo de eventos habituales.
Los eventos de tipo google.cloud.pubsub.topic.v1.messagePublished
tienen el siguiente formato:
{ "data":{ EVENT_DATA }, "datacontenttype": "application/json; charset=utf-8", "id": "MESSAGE_ID", "source": "//pubsub.googleapis.com/TOPIC_NAME", "specversion": "1.0", "type": "google.cloud.pubsub.topic.v1.messagePublished", "time": "EVENT_GENERATION_TIME" }
EVENT_DATA
: el contenido del mensaje decodificado en formato JSON. Para obtener más información, consulta la sección Eventos comunes de este documento.MESSAGE_ID
,EVENT_GENERATION_TIME
: generado por el sistema.TOPIC_NAME
: el nombre del tema de Pub/Sub en el que se ha publicado el evento.
Repositorio de código abierto
La estructura del cuerpo HTTP de todos los eventos está disponible en el repositorio de GitHub de CloudEvents.
El repositorio contiene lo siguiente para ayudarte a entender y usar los datos de CloudEvents en tu lenguaje de programación:
- Protocol buffers de Google para cargas útiles de datos de CloudEvents
- Esquemas JSON generados
- Un catálogo público de esquemas JSON
También se incluyen enlaces a bibliotecas de cliente.
Eventos comunes
Los búferes de protocolo (o protobufs) representan los datos de los eventos que genera Eventarc. Los Protocol Buffers de CloudEvents se proporcionan como esquemas legibles por máquina, lo que permite crear bibliotecas de tipos de datos y facilita el consumo de eventos.
Hay dos mensajes protobuf que son relevantes para cualquier tipo de CloudEvent:
- El mensaje envelope que representa el CloudEvent completo,
incluidos los atributos de extensión; por ejemplo,
AuditLogWrittenEvent
. - El mensaje de datos, por ejemplo,
LogEntryData
oStorageObjectData
.
StorageObjectData
como mensaje de datos. Cada mensaje de envolvente especifica el tipo de CloudEvent al que está asociado mediante una anotación proto.
Para obtener más información, consulta Relación entre los mensajes protobuf y los tipos de CloudEvent.
En las siguientes tablas se detallan los componentes de algunos eventos habituales:
Registros de auditoría de Cloud
Archivos Proto | google/events/cloud/audit/v1/events.proto google/events/cloud/audit/v1/data.proto |
Mensaje de sobre | google.events.cloud.audit.v1.AuditLogWrittenEvent |
Mensaje de datos | google.events.cloud.audit.v1.LogEntryData |
Tipo de evento (cuando se escribe una entrada de registro de auditoría) |
google.cloud.audit.log.v1.written |
Extensiones de evento |
|
Ejemplos |
Registro de auditoría de Pub/Sub Registro de auditoría de BigQuery |
Más información |
Crear un activador de Eventarc para un evento de Registros de auditoría de Cloud Determinar filtros de eventos para Registros de auditoría de Cloud Google Cloud servicios con registros de auditoría |
Cloud Storage
Archivos Proto |
google/events/cloud/storage/v1/events.proto google/events/cloud/storage/v1/data.proto |
Mensajes de sobre | google.events.cloud.storage.v1.ObjectFinalizedEvent google.events.cloud.storage.v1.ObjectArchivedEvent google.events.cloud.storage.v1.ObjectDeletedEvent google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent |
Mensaje de datos | google.events.cloud.storage.v1.StorageObjectData |
Recurso |
Objects |
Tipos de eventos |
Consulta la lista de tipos de eventos directos. |
Ejemplos |
Simple Complejo |
Más información |
Crea un activador de Eventarc para un evento de Cloud Storage Recibe eventos de Cloud Storage en un servicio de Cloud Run |
Firestore
Archivos Proto |
google/events/cloud/firestore/v1/events.proto google/events/cloud/firestore/v1/data.proto |
Mensajes de sobre | google.events.cloud.firestore.v1.DocumentCreatedEvent google.events.cloud.firestore.v1.DocumentUpdatedEvent google.events.cloud.firestore.v1.DocumentDeletedEvent google.events.cloud.firestore.v1.DocumentWrittenEvent |
Mensaje de datos | google.events.cloud.firestore.v1.DocumentEventData |
Recurso |
Document
|
Tipos de eventos | Consulta la lista de tipos de eventos directos. |
Ejemplos |
Simple Complejo |
Más información |
Crear un activador de Eventarc para un evento de Firestore Crear arquitecturas basadas en eventos con Eventarc y Firestore Extender con funciones de Cloud Run para gestionar eventos activados por cambios en Firestore |
Pub/Sub
Archivos Proto |
google/events/cloud/pubsub/v1/events.proto google/events/cloud/pubsub/v1/data.proto |
Mensaje de sobre | google.events.cloud.pubsub.v1.MessagePublishedEvent |
Mensaje de datos | google.events.cloud.pubsub.v1.MessagePublishedData |
Recurso |
PubsubMessage
|
Tipo de evento (cuando se publica un mensaje de Pub/Sub) |
google.cloud.pubsub.topic.v1.messagePublished |
Ejemplo | Texto |
Más información |
Recibir eventos en un servicio de Cloud Run mediante mensajes de Pub/Sub Activar un flujo de trabajo mediante mensajes de Pub/Sub |