CloudEvents-Format – HTTP-Protokollbindung

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

CloudEvents (cloudevents.io) ist eine Spezifikation zum allgemeinen Beschreiben von Ereignisdaten. Die Spezifikation fällt unter die Cloud Native Computing Foundation (CNCF) und wird von der serverlosen Arbeitsgruppe des CNCF organisiert.

Eventarc liefert Ereignisse über eine HTTP-Anfrage an den Ereignisempfänger im CloudEvents-Format.

Format der HTTP-Anfrage

Zieldienste empfangen Ereignisse von Ereignis-Routern als HTTP-POST-Anfragen, die gemäß der HTTP-Protokollbindungsspezifikation von CloudEvents Version 1.0 formatiert wurden. Jede HTTP-Anfrage enthält ereignisspezifische Header und einen Textkörper und wird an den Root-URL-Pfad (/) des Dienstes gesendet.

Neben anderen HTTP-Headern haben alle Ereignisse die folgenden CloudEvents-HTTP-Header:

Header Beschreibung Beispiel
ce-id Eindeutige Kennung für das Ereignis 1096434104173400
ce-source Gibt die Quelle des Ereignisses an //pubsub.googleapis.com/projects/my-project/topics/my-topic
ce-specversion Die CloudEvents-Spezifikationsversion, die für dieses Ereignis verwendet wird. 1.0
ce-type Die Art der Ereignisdaten google.cloud.pubsub.topic.v1.messagePublished
ce-time Zeitpunkt der Ereigniserstellung im Format RFC 3339 (optional) 2020-12-20T13:37:33.647Z

Format der HTTP-Nutzlast

Cloud-Audit-Logs

Ereignisse vom Typ google.cloud.audit.log.v1.written haben das folgende Format:

Header

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: der Google API-URI für den Dienst, der das Ereignis ausgibt, z. B. bigquery.googleapis.com für Ereignisse aus BigQuery.
  • PROJECT_ID: die ID Ihres GCP-Projekts.
  • MESSAGE_ID, PUBLISH_TIME, CONTENT_LENGTH: vom System generiert.

Text

Die Nutzlast ist ein JSON-Objekt, in dem das Ereignis des Cloud-Audit-Logs detailliert beschrieben wird. In protoPayload finden Sie die Werte resourceName, serviceName und methodName. Weitere Informationen finden Sie unter Ereignisfilter für Cloud-Audit-Logging ermitteln.

Pub/Sub

Ereignisse vom Typ google.cloud.pubsub.topic.v1.messagePublished haben das folgende Format:

Header

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: das Pub/Sub-Thema, in dem das Ereignis veröffentlicht wurde.
  • MESSAGE_ID, PUBLISH_TIME, CONTENT_LENGTH: vom System generiert.

Text

Die Nutzlast ist eine Pub/Sub-Push-Nachricht. Im Feld data finden Sie die Nachricht als Base64-codierten String. Siehe das Beispiel in diesem Dokument.

Open Source

Die Struktur des HTTP-Texts für alle Ereignisse ist im CloudEvents-GitHub-Repository verfügbar.

Das Repository enthält Folgendes, damit Sie CloudEvents-Daten in Ihrer Programmiersprache verstehen und verwenden können:

  • Google Protocol Buffers für CloudEvents-Datennutzlasten
  • Generierte JSON-Schemas
  • Einen öffentlichen JSON-Schemakatalog

Links zu Clientbibliotheken sind ebenfalls enthalten.

Häufige Ereignisse

Protokollzwischenspeicher (oder Protokollpuffer) stellen die Daten innerhalb von Ereignissen dar, die von Eventarc generiert werden. Protokollzwischenspeicher für CloudEvents werden als maschinenlesbare Schemas bereitgestellt, wodurch Bibliotheken von Datentypen erstellt werden können und die Nutzung von Ereignissen vereinfacht wird.

Es gibt zwei protobuf-Nachrichten, die für alle CloudEvent-Typ relevant sind:

  • Die Envelope-Nachricht, die das vollständige CloudEvent einschließlich Erweiterungsattribute darstellt. Beispiel: AuditLogWrittenEvent.
  • Die Datennachricht; Beispiel: LogEntryData oder StorageObjectData.
Viele CloudEvent-Typen können die gleiche Datennachricht verwenden. Beispielsweise verwendet jedes mit einem Cloud Storage-Objekt verknüpfte Ereignis StorageObjectData als Datennachricht. Jede Envelope-Nachricht gibt den CloudEvent-Typ an, dem sie über eine Proto-Annotation zugeordnet ist. Weitere Informationen finden Sie unter Beziehung zwischen protobuf-Nachrichten und CloudEvent-Typen.

In den folgenden Tabellen sind die Komponenten einiger häufiger Ereignisse aufgeführt:

Cloud-Audit-Logs

Proto-Dateiengoogle/events/cloud/audit/v1/events.proto
google/events/cloud/audit/v1/data.proto
Envelope-Nachrichtgoogle.events.cloud.audit.v1.AuditLogWrittenEvent
Datennachrichtgoogle.events.cloud.audit.v1.LogEntryData
Ereignistyp
(wenn ein Audit-Logeintrag geschrieben wird)
google.cloud.audit.log.v1.written
Ereigniserweiterungen
  • serviceName
  • methodName
  • resourceName
Beispiel Pub/Sub Audit-Log
BigQuery Audit-Log

Cloud Storage

Proto-Dateien google/events/cloud/storage/v1/events.proto
google/events/cloud/storage/v1/data.proto
Envelope-Nachrichtengoogle.events.cloud.storage.v1.ObjectFinalizedEvent
google.events.cloud.storage.v1.ObjectArchivedEvent
google.events.cloud.storage.v1.ObjectDeletedEvent
google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent
Datennachrichtgoogle.events.cloud.storage.v1.StorageObjectData
Ressource Objects
Ereignistypen
(wenn ein Cloud Storage-Job abgeschlossen, archiviert, gelöscht, aktualisiert wird)
google.cloud.storage.object.v1.finalized
google.cloud.storage.object.v1.archived
google.cloud.storage.object.v1.deleted
google.cloud.storage.object.v1.metadataUpdated
Beispiele Einfach
Komplex

Pub/Sub

Proto-Dateien google/events/cloud/pubsub/v1/events.proto
google/events/cloud/pubsub/v1/data.proto
Envelope-Nachrichtgoogle.events.cloud.pubsub.v1.MessagePublishedEvent
Datennachrichtgoogle.events.cloud.pubsub.v1.MessagePublishedData
Ressource PubsubMessage
Ereignistyp
(wenn eine Pub/Sub-Nachricht veröffentlicht wird)
google.cloud.pubsub.topic.v1.messagePublished
Beispiele Text