Eventarc 触发器声明您对某个事件或一系列事件感兴趣。如需配置事件路由,您可以为触发器指定过滤条件,包括事件来源和目标工作流。
事件通过 HTTP 请求以 CloudEvents 格式传送。Workflows 服务将事件转换为 JSON 对象(遵循 CloudEvents 规范),并将事件作为工作流运行时参数传递给工作流执行。确保事件大小不超过 512 KB。大于 Workflows 参数大小上限的事件不会触发工作流执行。
以下说明介绍如何配置事件路由,以便触发工作流执行来响应直接Firebase Realtime Database 事件。如需了解详情,请参阅支持的直接事件列表。准备创建触发器
在为目标工作流创建 Eventarc 触发器之前,请完成以下任务。
控制台
在 Google Cloud 控制台的“项目选择器”页面上,选择或创建 Google Cloud 项目。
启用 Eventarc、Eventarc Publishing、Workflows 和 Workflow Executions API。
如果适用,请启用与直接事件相关的 API。例如,对于 Firebase Realtime Database 事件,请启用Firebase Realtime Database API。
如果您还没有用户管理的服务账号,请创建一个,并为其授予必要的角色和权限,以便 Eventarc 可以管理目标工作流的事件。
在 Google Cloud 控制台中,转到服务账号页面。
选择您的项目。
在服务账号名称字段中,输入一个名称。Google Cloud 控制台会根据此名称填充服务账号 ID 字段。
在服务账号说明字段中,输入说明。例如
Service account for event trigger
。点击创建并继续。
如需提供适当的访问权限,请在选择角色列表中,选择要向服务账号授予的所需 Identity and Access Management (IAM) 角色。如需了解详情,请参阅 Workflows 目标的角色和权限。
如需添加其他角色,请点击
添加其他角色,然后添加其他各个角色。点击继续。
如需完成账号的创建过程,请点击完成。
gcloud
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
启用 Eventarc、Eventarc Publishing、Workflows 和 Workflow Executions API:
gcloud services enable eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ workflows.googleapis.com \ workflowexecutions.googleapis.com
如果适用,请启用与直接事件相关的 API。例如,对于 Firebase Realtime Database 事件,请启用
firebasedatabase.googleapis.com
。如果您还没有用户管理的服务账号,请创建一个,并为其授予必要的角色和权限,以便 Eventarc 可以管理目标工作流的事件。
创建服务账号:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
将
SERVICE_ACCOUNT_NAME
替换为服务账号的名称。该名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。授予所需的 Identity and Access Management (IAM) 角色或权限。如需了解详情,请参阅 Workflows 目标的角色和权限。
创建触发器
您可以使用 Google Cloud CLI(gcloud
或 Terraform)或通过 Google Cloud 控制台创建将已部署工作流作为事件接收器的 Eventarc 触发器。
控制台
- 在 Google Cloud 控制台中,进入 Eventarc 触发器页面。
- 点击 创建触发器。
- 输入触发器名称。
这是触发器的 ID,必须以字母开头。最多可包含 63 个小写字母、数字或连字符。
- 在触发器类型部分,选择 Google 来源。
- 在事件提供方列表中,选择 Firebase Realtime Database。
请注意,关联的 Google Cloud 文档中使用的事件提供方名称可能没有 Cloud 或 Google Cloud 前缀。例如,在控制台中,Memorystore for Redis 称为 Google Cloud Memorystore for Redis。
- 在事件类型列表中,从“直接”事件中选择事件类型。
- 在事件数据内容类型列表中,选择事件载荷的编码。
对于来自 Firebase Realtime Database的直接事件,编码必须是 application/json。
- 在区域列表中,选择生成事件的 Google Cloud 服务所在的区域。
如需了解详情,请参阅 Eventarc 位置。
- 在属性 1 字段中,instance 资源 ID 充当事件过滤条件。选择此过滤条件的运算符:
- 等于
- 路径模式
如需了解详情,请参阅了解路径模式。
- 在属性值 1 字段中,输入要从中接收事件的数据库实例的名称。根据您在上一步选择的运算符,属性值应该是确切的名称或路径模式格式。
- 对于 ref 属性,选择路径模式运算符。
- 在属性值 2 字段中,输入要接收事件的数据库实例路径(在该路径或任何子路径中创建、更新或删除数据时生成事件)。
- 选择将调用您的服务或工作流的服务账号。
或者,您可以创建新的服务账号。
这用于指定与触发器相关联且您之前向其授予 Eventarc 所需的特定角色的 Identity and Access Management (IAM) 服务账号电子邮件。
- 在事件目的地列表中,选择 Workflows。
- 选择工作流。
这是要将事件传递给的工作流的名称。工作流执行的事件会被转换并作为运行时参数传递给工作流。
如需了解详情,请参阅为工作流创建触发器。
- 点击创建。
创建触发器之后,您便无法修改事件来源过滤条件。请创建新触发器,并删除旧触发器。 如需了解详情,请参阅管理触发器。
gcloud
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-workflow=DESTINATION_WORKFLOW \ --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \ --event-filters="type=EVENT_FILTER_TYPE" \ --event-filters="instance=INSTANCE" \ --event-filters-path-pattern="ref=REF" \ --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"
替换以下内容:
TRIGGER
:触发器的 ID 或完全限定标识符。
LOCATION
:Eventarc 触发器的位置。 或者,设置eventarc/location
属性;例如gcloud config set eventarc/location us-central1
。Eventarc 的 Firebase Realtime Database 触发器仅在以下位置提供:us-central1
europe-west1
asia-southeast1
请注意,触发器必须与 Firebase Realtime Database 实例位于同一位置。如需了解详情,请参阅 Realtime Database 位置。
-
DESTINATION_WORKFLOW
:从触发器接收事件的已部署工作流的 ID。 工作流可以位于 Workflows 支持的任何位置,无需与触发器位于同一位置。但是,工作流必须与触发器位于同一项目中。 -
DESTINATION_WORKFLOW_LOCATION
(可选):目标工作流的部署位置。如果未指定,系统将假定工作流与触发器位于同一位置。 EVENT_FILTER_TYPE
:Firebase Realtime Database 事件的标识符,可以是以下类型之一:google.firebase.database.ref.v1.created
:在数据库中创建数据时发送事件google.firebase.database.ref.v1.updated
:在数据库中更新数据时发送事件google.firebase.database.ref.v1.deleted
:在数据库中删除数据时发送事件google.firebase.database.ref.v1.written
:在数据库中创建、更新或删除数据时发送事件
INSTANCE
:单个数据库实例,运算符可以是下列其中一项:- 等于;例如
--event-filters="instance=INSTANCE"
。 - 路径模式;例如
--event-filters-path-pattern="instance=INSTANCE"
。如需了解详情,请参阅了解路径模式。
- 等于;例如
REF
:数据库实例中的路径,当在该路径或其任何子路径中创建、更新或删除数据时,您希望从该路径接收事件。-
SERVICE_ACCOUNT_NAME
:您创建的 IAM 服务账号的名称,您已向其授予 Workflows 所需的特定角色。 -
PROJECT_ID
:您的 Google Cloud 项目 ID
注意:
- 对于来自 Firebase Realtime Database的直接事件,事件载荷的编码为
application/json
。 - 这些标志是必需的:
--event-filters="type=EVENT_FILTER_TYPE"
--event-filters="instance=INSTANCE"
或--event-filters-path-pattern="instance=INSTANCE"
--event-filters-path-pattern="ref=REF"
- 触发器创建后,事件过滤条件类型便无法更改。 对于其他事件类型,您必须创建新的触发器。
-
--service-account
:您的 Eventarc 触发器将用于调用工作流执行的 IAM 服务账号电子邮件。我们强烈建议您使用具备访问必需资源所需的最低权限的服务账号。如需详细了解服务账号,请参阅创建和管理服务账号。 - 默认情况下,为 Eventarc 创建的 Pub/Sub 订阅会持续存在(无论其活跃状态如何),并且不会过期。如需更改非活跃状态持续时间,请参阅订阅属性。
示例:
gcloud eventarc triggers create rd-workflows-trigger \ --location=us-central1 \ --destination-workflow=my-workflow \ --destination-workflow-location=europe-west4 \ --event-filters="type=google.firebase.database.ref.v1.created" \ --event-filters="instance=test-instance" \ --event-filters-path-pattern="ref=users/*" \ --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
此命令会为标识为 google.firebase.database.ref.v1.created
的事件创建一个名为 rd-workflows-trigger
的触发器。
Terraform
您可以使用 Terraform 为工作流创建触发器。如需了解详情,请参阅使用 Eventarc 和 Terraform 触发工作流。
列出触发器
如需确认触发器已创建,您可以使用 Google Cloud CLI 或通过 Google Cloud 控制台列出 Eventarc 触发器。
控制台
在 Google Cloud 控制台中,进入 Eventarc 触发器页面。
此页面会列出所有位置的触发器,并包含名称、区域、事件提供方、目标位置等详细信息。
如需过滤触发器,请执行以下操作:
- 点击 过滤或过滤触发器字段。
- 在属性列表中,选择要作为触发器过滤条件的选项。
您可以选择单个属性,或使用逻辑运算符
OR
添加更多属性。如需对触发器进行排序,请点击任意受支持的列标题旁边的
排序。
gcloud
运行以下命令可列出触发器:
gcloud eventarc triggers list --location=-
此命令会列出所有位置的触发器,并包含名称、类型、目标位置和状态等详细信息。