Formato CloudEventi: associazione protocollo HTTP

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Eventarc fornisce eventi al destinatario dell'evento nel formato CloudEvents tramite una richiesta HTTP.

Formato di richiesta HTTP

I servizi di destinazione ricevono gli eventi dai router degli eventi come richieste POST HTTP formattate in base alla versione 1.0 della specifica di associazione del protocollo HTTP di CloudEvents. Ogni richiesta HTTP contiene intestazioni specifiche e un corpo e viene inviata al percorso URL principale (/) del servizio.

Oltre alle altre intestazioni HTTP, tutti gli eventi hanno le seguenti intestazioni HTTP CloudEvents:

Intestazione Descrizione Esempio
ce-id Identificatore univoco per l'evento. 1096434104173400
ce-source Identifica l'origine dell'evento //pubsub.googleapis.com/projects/my-project/topics/my-topic
ce-specversion La versione della specifica CloudEvents utilizzata per l'evento 1.0
tipo ce Il tipo di dati dell'evento. google.cloud.pubsub.topic.v1.messagePublished
ce-time Momento della generazione dell'evento, nel formato RFC 3339 (facoltativo) 2020-12-20T13:37:33.647Z

Formato payload HTTP

Cloud Audit Logs

Gli eventi di tipo google.cloud.audit.log.v1.written hanno il seguente formato:

Intestazioni

ce-specversion: 1.0
ce-type: google.cloud.audit.log.v1.written
ce-source: //SERVICE_NAME/projects/PROJECT_ID
ce-id: MESSAGE_ID
ce-time: PUBLISH_TIME
Content-Type: application/json; charset=utf-8
Content-Length: CONTENT_LENGTH
  • SERVICE_NAME: URI dell'API di Google per il servizio che ha emesso l'evento, ad esempio bigquery.googleapis.com per gli eventi da BigQuery.
  • PROJECT_ID: ID progetto GCP.
  • MESSAGE_ID, PUBLISH_TIME, CONTENT_LENGTH: generato dal sistema.

Corpo del messaggio

Il payload è un oggetto JSON che elenca in dettaglio l'evento Cloud Audit Logs. In protoPayload puoi trovare i valori resourceName, serviceName e methodName. Per maggiori informazioni, consulta Determinare i filtri eventi per Cloud Audit Logs.

Pub/Sub

Gli eventi di tipo google.cloud.pubsub.topic.v1.messagePublished hanno il seguente formato:

Intestazioni

ce-specversion: 1.0
ce-type: google.cloud.pubsub.topic.v1.messagePublished
ce-source: //pubsub.googleapis.com/TOPIC
ce-id: MESSAGE_ID
ce-time: PUBLISH_TIME
Content-Type: application/json; charset=utf-8
Content-Length: CONTENT_LENGTH
  • TOPIC: l'argomento Pub/Sub in cui è stato pubblicato l'evento.
  • MESSAGE_ID, PUBLISH_TIME, CONTENT_LENGTH: generato dal sistema.

Corpo del messaggio

Il payload è un messaggio push di Pub/Sub. Nel campo data puoi trovare il messaggio come stringa con codifica Base64. Vedi l'esempio in questo documento.

Open source

La struttura del corpo HTTP per tutti gli eventi è disponibile nel repository GitHub Eventi di Cloud.

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

  • Buffer di protocollo Google per i payload dei dati di CloudEvents
  • Schemi JSON generati
  • Un catalogo di schemi JSON pubblico

Sono inclusi anche i link alle librerie client.

Eventi comuni

I buffer di protocollo (o protobuf) rappresentano i dati all'interno di eventi generati da Eventarc. I buffer di protocollo per CloudEvent vengono forniti come schemi leggibili dalle macchine, consentendo la creazione di librerie di tipi di dati e semplificando il consumo di eventi.

Sono presenti due messaggi protobuf pertinenti per qualsiasi tipo di CloudEvent:

  • Il messaggio envelope che rappresenta il CloudEvent completo, inclusi eventuali attributi dell'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 busta specifica il tipo CloudEvent a cui è associato tramite un'annotazione protocollo. Per ulteriori informazioni, consulta la Relazione tra messaggi protobuf e tipi CloudEvent.

Le seguenti tabelle descrivono i componenti di alcuni eventi comuni:

Cloud Audit Logs

File di protocollogoogle/events/cloud/audit/v1/events.proto
google/events/cloud/audit/v1/data.proto
Messaggio bustagoogle.events.cloud.audit.v1.AuditLogWrittenEvent
Messaggio datigoogle.events.cloud.audit.v1.LogEntryData
Tipo di evento
(quando viene scritta una voce del log di controllo)
google.cloud.audit.log.v1.written
Estensioni evento
  • serviceName
  • methodName
  • resourceName
Esempio Log di controllo di Pub/Sub
Log di controllo di BigQuery

Cloud Storage

File di protocollo google/events/cloud/storage/v1/events.proto
google/events/cloud/storage/v1/data.proto
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 datigoogle.events.cloud.storage.v1.StorageObjectData
Risorsa Objects
Tipi di eventi
(quando un job Cloud Storage viene finalizzato, archiviato, eliminato, aggiornato)
google.cloud.storage.object.v1.finalized
google.cloud.storage.object.v1.archived
google.cloud.storage.object.v1.deleted
google.cloud.storage.object.v1.metadataUpdated
Esempi Semplice
Complesso

Pub/Sub

File di protocollo google/events/cloud/pubsub/v1/events.proto
google/events/cloud/pubsub/v1/data.proto
Messaggio bustagoogle.events.cloud.pubsub.v1.MessagePublishedEvent
Messaggio datigoogle.events.cloud.pubsub.v1.MessagePublishedData
Risorsa PubsubMessage
Tipo di evento
(quando viene pubblicato un messaggio Pub/Sub)
google.cloud.pubsub.topic.v1.messagePublished
Esempi Testo