CloudEvents - Formato evento JSON

CloudEvents (cloudevents.io) è una specifica per descrivere i dati degli eventi in modo comune. La specifica è sotto la Cloud Native Computing Foundation (CNCF) ed è organizzata dal gruppo di lavoro serverless della CNCF.

Eventarc invia gli eventi al ricevitore di eventi nel formato CloudEvents tramite una richiesta HTTP. La destinazione, ad esempio il servizio Workflows, converte l'evento in un oggetto JSON (in base alla specifica CloudEvents) e lo passa all'esecuzione del flusso di lavoro come argomento runtime del flusso di lavoro.

Formato del payload JSON

Il servizio di destinazione riceve eventi dai router di eventi e li formatta nel formato evento JSON per CloudEvents versione 1.0.1 con i seguenti attributi CloudEvents:

Attributo Descrizione Esempio
dati Il payload dei dati sugli eventi.
{
  "subscription": "projects/my-project/subscriptions/my-sub",
  "message": {
    "attributes": {
      "attr1":"attr1-value"
    },
    "data": "aGVsbG8gd29ybGQ=",
    "messageId": "2070443601311540",
    "publishTime":"2021-02-26T19:13:55.749Z"
  }
}
datacontenttype Il tipo di dati che è stato trasmesso application/json
ID L'identificatore univoco dell'evento 2070443601311540
origine L'origine dell'evento //pubsub.googleapis.com/projects/my-project/topics/my-topic
specversion La versione della specifica CloudEvents utilizzata per questo evento 1.0
tipo Il tipo di dati sugli eventi google.cloud.pubsub.topic.v1.messagePublished
tempo Ora di generazione dell'evento, in formato RFC 3339 (facoltativo) 2020-12-20T13:37:33.647Z

A seconda del tipo di evento, il formato del payload è il seguente:

Cloud Audit Logs

L'argomento runtime è un oggetto JSON che descrive l'evento Cloud Audit Logs. In questo documento, vedi l'esempio di eventi comuni. Nell'oggetto JSON puoi trovare i valori resourceName, serviceName e methodName. Per saperne di più, vedi Determinare i filtri eventi per Cloud Audit Logs.

Gli eventi di tipo google.cloud.audit.log.v1.written hanno il seguente 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: i contenuti del messaggio decodificati in formato JSON. Per saperne di più, consulta la sezione Eventi comuni di questo documento.
  • MESSAGE_ID, EVENT_GENERATION_TIME: generato dal sistema.
  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • dataschema, methodName, resourceName, serviceName, subject: attributi specifici del tipo di evento.

Cloud Storage

Gli argomenti di runtime sono modifiche a Cloud Storage. Nel campo data puoi trovare la modifica nel bucket Cloud Storage. In questo documento, vedi l'esempio di eventi comuni.

Gli eventi di tipo google.cloud.storage.object.v1.finalized hanno il seguente 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: i contenuti del messaggio decodificati in formato JSON. Per saperne di più, consulta la sezione Eventi comuni di questo documento.
  • MESSAGE_ID, EVENT_GENERATION_TIME: generato dal sistema.
  • BUCKET_NAME: il nome del bucket Cloud Storage che viene aggiornato.
  • subject: attributo specifico per il tipo di evento.

Pub/Sub

L'argomento di runtime è un messaggio push Pub/Sub. Nel campo data puoi trovare il messaggio come stringa codificata in base64. In questo documento, vedi l'esempio di eventi comuni.

Gli eventi di tipo google.cloud.pubsub.topic.v1.messagePublished hanno il seguente 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: i contenuti del messaggio decodificati in formato JSON. Per saperne di più, consulta la sezione Eventi comuni di questo documento.
  • MESSAGE_ID, EVENT_GENERATION_TIME: generato dal sistema.
  • TOPIC_NAME: il nome dell'argomento Pub/Sub a cui è stato pubblicato l'evento.

Repository open source

La struttura del corpo HTTP per tutti gli eventi è disponibile nel repository GitHub CloudEvents.

Il repository contiene quanto segue per aiutarti a comprendere e utilizzare i dati CloudEvents nel tuo linguaggio di programmazione:

  • Google Protocol Buffers per i payload di dati CloudEvents
  • Schemi JSON generati
  • Un catalogo pubblico di schemi JSON

Sono inclusi anche i link alle librerie client.

Eventi comuni

I protocol buffer (o protobuf) rappresentano i dati all'interno degli eventi generati da Eventarc. I buffer di protocollo per CloudEvents vengono forniti come schemi leggibili automaticamente, consentendo la creazione di librerie di tipi di dati e semplificando l'utilizzo degli eventi.

Esistono due messaggi protobuf pertinenti per un determinato tipo di CloudEvent:

  • Il messaggio envelope che rappresenta l'intero CloudEvent, inclusi eventuali attributi di estensione; ad esempio, AuditLogWrittenEvent.
  • Il messaggio data; ad esempio, LogEntryData o StorageObjectData.
Molti tipi di CloudEvent possono utilizzare lo stesso messaggio di dati. Ad esempio, ogni evento associato a un oggetto Cloud Storage utilizza StorageObjectData come messaggio di dati. Ogni messaggio envelope specifica il tipo di CloudEvent a cui è associato tramite un'annotazione proto. Per saperne di più, consulta Relazione tra messaggi protobuf e tipi CloudEvent.

Le tabelle seguenti descrivono in dettaglio i componenti di alcuni eventi comuni:

Cloud Audit Logs

File Protogoogle/events/cloud/audit/v1/events.proto
google/events/cloud/audit/v1/data.proto
Messaggio nella bustagoogle.events.cloud.audit.v1.AuditLogWrittenEvent
Messaggio di datigoogle.events.cloud.audit.v1.LogEntryData
Tipo di evento
(quando viene scritta una voce di log di controllo)
google.cloud.audit.log.v1.written
Estensioni evento
  • serviceName
  • methodName
  • resourceName
Consulta l'elenco dei tipi di eventi che utilizzano Cloud Audit Logs.
Esempi Log di controllo Pub/Sub
Log di controllo BigQuery
Ulteriori informazioni Crea un trigger Eventarc per un evento Cloud Audit Logs
Determina i filtri eventi per Cloud Audit Logs
Google Cloud servizi con audit log

Cloud Storage

File Proto google/events/cloud/storage/v1/events.proto
google/events/cloud/storage/v1/data.proto
Messaggi di bustagoogle.events.cloud.storage.v1.ObjectFinalizedEvent
google.events.cloud.storage.v1.ObjectArchivedEvent
google.events.cloud.storage.v1.ObjectDeletedEvent
google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent
Messaggio di datigoogle.events.cloud.storage.v1.StorageObjectData
Risorsa Objects
Tipi di eventi
Consulta l'elenco dei tipi di eventi diretti.
Esempi Semplice
Complesso
Ulteriori informazioni Crea un trigger Eventarc per un evento Cloud Storage
Ricevi eventi da Cloud Storage in un servizio Cloud Run

Firestore

File Proto google/events/cloud/firestore/v1/events.proto
google/events/cloud/firestore/v1/data.proto
Messaggi di bustagoogle.events.cloud.firestore.v1.DocumentCreatedEvent
google.events.cloud.firestore.v1.DocumentUpdatedEvent
google.events.cloud.firestore.v1.DocumentDeletedEvent
google.events.cloud.firestore.v1.DocumentWrittenEvent
Messaggio di datigoogle.events.cloud.firestore.v1.DocumentEventData
Risorsa Document
Tipi di evento Consulta l'elenco dei tipi di eventi diretti.
Esempi Semplice
Complesso
Ulteriori informazioni Crea un trigger Eventarc per un evento Firestore
Crea architetture basate su eventi con Eventarc e Firestore
Estendi con le funzioni Cloud Run per gestire gli eventi attivati dalle modifiche in Firestore

Pub/Sub

File Proto google/events/cloud/pubsub/v1/events.proto
google/events/cloud/pubsub/v1/data.proto
Messaggio nella bustagoogle.events.cloud.pubsub.v1.MessagePublishedEvent
Messaggio di datigoogle.events.cloud.pubsub.v1.MessagePublishedData
Risorsa PubsubMessage
Tipo di evento
(quando viene pubblicato un messaggio Pub/Sub)
google.cloud.pubsub.topic.v1.messagePublished
Esempio Testo
Ulteriori informazioni Ricevi eventi in un servizio Cloud Run utilizzando messaggi Pub/Sub
Attiva un flusso di lavoro utilizzando messaggi Pub/Sub