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_ID
、PUBLISH_TIME
、CONTENT_LENGTH
:系统生成。
正文
载荷是详细说明 Cloud Audit Logs 事件的 JSON 对象。在 protoPayload
中,您可以找到 resourceName
、serviceName
和 methodName
值。如需了解详情,请参阅确定 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_ID
、PUBLISH_TIME
、CONTENT_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
。 - 数据消息;例如
LogEntryData
或StorageObjectData
。
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 |
事件扩展 |
|
示例 |
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 |
示例 | 简单 复杂 |
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 |
示例 | 文本 |