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
:您的 Google Cloud 项目 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 Audit Logs 事件创建 Eventarc 触发器 确定 Cloud Audit Logs 的事件过滤条件 具有审核日志的 Google Cloud 服务 |
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 事件创建 Eventarc 触发器 在 Cloud Run 服务中接收来自 Cloud Storage 的事件 |
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 事件创建 Eventarc 触发器 使用 Eventarc 和 Firestore 创建事件驱动型架构 通过 Cloud Run functions 扩展以处理因 Firestore 更改而触发的事件 |
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 |
示例 | 文本 |
更多信息 |
使用 Pub/Sub 消息接收 Cloud Run 服务中的事件 使用 Pub/Sub 消息触发工作流 |