CloudEvents 格式 - HTTP 协议绑定

CloudEvents (cloudevents.io) 是一种以通用方式描述事件数据的规范。该规范属于 Cloud Native Computing Foundation (CNCF),并由 CNCF 的无服务器工作组整理。

Eventarc 通过 HTTP 请求以 CloudEvents 格式将事件传递给事件接收器。

HTTP 请求标头

目标服务从事件路由器以采用 CloudEvents 1.0 版 HTTP 协议绑定规范格式的 HTTP POST 请求的形式接收事件。每个 HTTP 请求都包含特定于事件的标头和正文,并发送到服务的根网址路径 (/)。

除其他 HTTP 标头外,所有事件还具有以下 CloudEvents HTTP 标头:

标题 说明 示例
ce-id 事件的唯一标识符 1096434104173400
ce-source 标识事件的来源 //pubsub.googleapis.com/projects/my-project/topics/my-topic
ce-specversion 此事件使用的 CloudEvents 规范版本 1.0
ce-type 事件数据的类型 google.cloud.pubsub.topic.v1.messagePublished
ce-time 事件生成时间,采用 RFC 3339 格式(可选) 2020-12-20T13:37:33.647Z

HTTP 载荷格式

Cloud Audit Logs

google.cloud.audit.log.v1.written 类型的事件具有以下格式:

标头

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:发出事件的服务的 Google API URI;例如,来自 BigQuery 的事件为 bigquery.googleapis.com
  • PROJECT_ID:您的 GCP 项目 ID。
  • MESSAGE_IDPUBLISH_TIMECONTENT_LENGTH:系统生成。

正文

载荷是详细说明 Cloud Audit Logs 事件的 JSON 对象。在 protoPayload 中,您可以找到 resourceNameserviceNamemethodName 值。如需了解详情,请参阅确定 Cloud Audit Logs 的事件过滤条件

Pub/Sub

google.cloud.pubsub.topic.v1.messagePublished 类型的事件具有以下格式:

标头

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:事件发布到的 Pub/Sub 主题。
  • MESSAGE_IDPUBLISH_TIMECONTENT_LENGTH:系统生成。

正文

载荷是 Pub/Sub 推送消息。在 data 字段中,您可以找到以 Base64 编码的字符串形式的消息。 请参阅本文档中的示例

开源代码库

所有事件的 HTTP 正文结构都位于 CloudEvents GitHub 代码库中。

该代码库包含以下内容,帮助您了解和使用采用您的编程语言的 CloudEvents 数据:

  • 用于 CloudEvents 数据载荷的 Google Protocol Buffers
  • 生成的 JSON 架构
  • 公开 JSON 架构目录

还包含指向客户端库的链接。

常见事件

Protocol Buffer(或 protobuf)表示 Eventarc 生成的事件中的数据。适用于 CloudEvent 的 Protocol Buffer 以机器可读的架构提供,允许创建数据类型库并更轻松地使用事件。

以下是两个与任何给定 CloudEvent 类型相关的 protobuf 消息:

  • 表示完整 CloudEvent 的信包消息,包括任何扩展特性;例如 AuditLogWrittenEvent
  • 数据消息;例如 LogEntryDataStorageObjectData
许多 CloudEvent 类型都可以使用相同的数据消息。例如,与 Cloud Storage 对象关联的每个事件都使用 StorageObjectData 作为数据消息。每个信包消息通过 proto 注释指定与之关联的 CloudEvent 类型。如需了解详情,请参阅 protobuf 消息与 CloudEvent 类型之间的关系

下表详细说明了一些常见事件的组成部分:

Cloud Audit Logs

Proto 文件google/events/cloud/audit/v1/events.proto
google/events/cloud/audit/v1/data.proto
信包消息google.events.cloud.audit.v1.AuditLogWrittenEvent
数据消息google.events.cloud.audit.v1.LogEntryData
事件类型
(写入审核日志条目时)
google.cloud.audit.log.v1.written
事件扩展
  • serviceName
  • methodName
  • resourceName
示例 Pub/Sub 审核日志
BigQuery 审核日志

Cloud Storage

Proto 文件 google/events/cloud/storage/v1/events.proto
google/events/cloud/storage/v1/data.proto
信包消息google.events.cloud.storage.v1.ObjectFinalizedEvent
google.events.cloud.storage.v1.ObjectArchivedEvent
google.events.cloud.storage.v1.ObjectDeletedEvent
google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent
数据消息google.events.cloud.storage.v1.StorageObjectData
资源 Objects
事件类型
(Cloud Storage 作业完成、归档、删除、更新时)
google.cloud.storage.object.v1.finalized
google.cloud.storage.object.v1.archived
google.cloud.storage.object.v1.deleted
google.cloud.storage.object.v1.metadataUpdated
示例简单
复杂

Firestore

Proto 文件 google/events/cloud/firestore/v1/events.proto
google/events/cloud/firestore/v1/data.proto
信包消息google.events.cloud.firestore.v1.DocumentCreatedEvent
google.events.cloud.firestore.v1.DocumentUpdatedEvent
google.events.cloud.firestore.v1.DocumentDeletedEvent
google.events.cloud.firestore.v1.DocumentWrittenEvent
数据消息google.events.cloud.firestore.v1.DocumentEventData
资源 Document
事件类型
(创建、更新、删除和写入 Firestore 文档时)
google.cloud.firestore.document.v1.created
google.cloud.firestore.document.v1.updated
google.cloud.firestore.document.v1.deleted
google.cloud.firestore.document.v1.written
示例简单
复杂

Pub/Sub

Proto 文件 google/events/cloud/pubsub/v1/events.proto
google/events/cloud/pubsub/v1/data.proto
信包消息google.events.cloud.pubsub.v1.MessagePublishedEvent
数据消息google.events.cloud.pubsub.v1.MessagePublishedData
资源 PubsubMessage
事件类型
(发布 Pub/Sub 消息时)
google.cloud.pubsub.topic.v1.messagePublished
示例 文本