注册会标识对特定总线的订阅。注册会定义匹配条件,以确定要将哪些消息路由到目的地。它还指定了匹配消息应通过的流水线。借助流水线,您可以配置目标目的地,还可选择在将任何匹配的事件传送到目的地之前对其进行转换。
请注意以下几点:
- 数据流和注册必须位于同一 Google Cloud 项目中。(该模块可以位于同一项目中,也可以位于其他项目中。)
- 一个流水线可用于多次注册。
- 只有一个目的地可以成为流水线路由消息的目标。
- 在配置流水线或注册之前,您应该已创建 Eventarc Advanced 总线。
所需的角色
Identity and Access Management (IAM) 角色包含一组权限,可让您对 Google Cloud 资源执行特定操作。若要创建用于转送消息的流水线和注册,您需要具备以下角色和权限:
- 如需获得创建数据流水线所需的权限,请让您的管理员向您授予数据流水线项目的 Eventarc Developer (
roles/eventarc.developer
) IAM 角色。此预定义角色包含创建流水线所需的eventarc.pipelines.create
权限。 - 如需获得创建注册所需的权限,请让您的管理员向您授予注册项目的 Eventarc Developer (
roles/eventarc.developer
) IAM 角色。此预定义角色包含创建注册所需的eventarc.enrollments.create
权限。 - 如需获得使用消息队列所需的权限,请让您的管理员为您授予消息队列项目的 Eventarc Message Bus User (
roles/eventarc.messageBusUser
) IAM 角色。此预定义角色包含eventarc.buses.use
权限,使用公交车需要该权限。
如需详细了解如何授予角色,请参阅管理访问权限。您也可以使用自定义角色或其他预定义角色来获取这些权限。
注册以接收事件
您可以在 Google Cloud 控制台中或使用 Google Cloud CLI 创建流水线和注册。
控制台
在 Google Cloud 控制台中,您可以在流水线页面同时创建流水线和注册。
如需创建注册,请在 Google Cloud 控制台中,依次前往 Eventarc > 流水线页面。
点击
创建流水线。在流水线详情窗格中,执行以下操作:
- 输入流水线名称。这是您的流水线的 ID。
- 在区域列表中,选择要部署流水线的区域。流水线必须与总线位于同一区域。如需了解详情,请参阅 Eventarc 高级位置。
- 可选:您可以修改默认配置以重试事件。
- 对于加密,接受默认的 Google 管理的加密密钥或选择 Cloud KMS 密钥。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)。
如果您选择 Cloud KMS 密钥,请执行以下操作:
在密钥类型列表中,选择用于管理密钥的方法。
您可以手动管理密钥,也可以使用 Autokey,以按需生成密钥环和密钥。如果 Autokey 选项不可用,则表明其尚未与当前的资源类型集成。
在选择客户管理的密钥中,选择一个密钥。
请注意,您必须先选择区域,然后才能查看客户管理的密钥。
可选:如需手动输入密钥的资源名称,请在选择客户管理的密钥列表中,点击手动输入密钥,然后以指定格式输入密钥名称。
如果出现提示,请向 Eventarc Service Agent 授予
cloudkms.cryptoKeyEncrypterDecrypter
角色。
可选:如需添加标签,请点击 什么是标签?
添加标签。标签是有助于您整理 Google Cloud 资源的键值对。如需了解详情,请参阅点击继续。
在注册窗格中,执行以下操作:
- 点击添加注册。
- 输入注册名称。
- 在 Bus 列表中,选择要订阅的总线。
在 CEL 表达式字段中,使用 CEL 编写评估表达式。例如:
message.type == "google.cloud.dataflow.job.v1beta3.statusChanged"
请注意,默认表达式 true 表示所有消息都会被路由,且不经过过滤。
点击完成。
您可以添加其他注册信息,也可以点击继续。
可选:在事件中介窗格中,执行以下操作或点击继续:
在目标窗格中,执行以下操作:
在目标类型列表中,选择要将消息路由到的目标类型。根据目标位置类型,执行以下操作:
HTTP 端点:指定目的地 URI。主机可以是可通过 Virtual Private Cloud (VPC) 网络寻址的静态 IP 地址,也可以是可使用 Cloud DNS 解析的服务的内部 Domain Name System (DNS) 主机名。
请注意,您可以使用此目标类型定位到 Cloud Run 函数。
Eventarc Advanced 总线:选择 Eventarc Advanced 总线。
Workflows 工作流:选择 Workflows 工作流。
Pub/Sub 主题:选择或创建 Pub/Sub 主题。
Cloud Run 服务(通过 HTTP):选择一个将以 HTTP
POST
请求的形式接收事件并将其发送到其根网址路径 (/
) 的 Cloud Run 服务;您还可以选择在应将事件发送到的目标服务上指定相对网址路径。Cloud Run 作业(通过 HTTP):选择将以 HTTP
POST
请求的形式接收事件的 Cloud Run 作业。
指定网络连接。
网络连接是一种资源,允许提供方 VPC 网络发起与使用方 VPC 网络的连接。为了发布事件,Eventarc Advanced 使用网络连接与 VPC 网络中托管的端点建立连接。
您可以创建网络连接,以自动接受与该网络连接关联的任何 Private Service Connect 接口发出的连接。在包含目标端点的同一网络和区域中创建网络连接。
如果您要使用 DNS 地址将消息路由到 Google 目的地(例如 Cloud Run、Pub/Sub、Workflows 或其他 Eventarc Advanced 总线),请确保在网络连接中使用的子网上启用了专用 Google 访问通道;否则,DNS 地址将无法解析。
在出站格式列表中,选择一种格式(如果适用)。
请注意,如果未为流水线指定入站数据格式,则无法设置出站格式。
如适用,请应用消息绑定。如需了解详情,请参阅定义消息绑定。
如需启用身份验证,请选中启用身份验证复选框。
在身份验证标头列表中,选择要生成的令牌类型,并将其作为
Authorization
标头附加到 HTTP 请求中:通常,只有在调用
*.googleapis.com
上托管的 Google API 时,才应使用 OAuth 令牌。(可选)指定此令牌的范围;否则,默认为https://www.googleapis.com/auth/cloud-platform
。对于 Google Cloud 服务,最佳实践是使用https://www.googleapis.com/auth/cloud-platform
范围(其中包括所有 Google Cloud API),以及提供精细访问权限控制的 Identity and Access Management (IAM)。请注意,对其他 Eventarc Advanced 总线、Pub/Sub 或 Workflows 的所有请求都必须包含 HTTP 授权标头,其中包含由 Google 为其中一个已获授权的服务账号签名的 OAuth 令牌。
OIDC 令牌可用于许多场景,包括您打算自行验证令牌的端点。此外,请指定此令牌的目标受众群体。通常,它应与目标流水线的网址一致。如果未指定,系统会使用整个网址,包括所有请求参数。
请注意,Cloud Run 会对每个请求执行 IAM 检查,您可以使用
run.routes.invoke
权限通过以下任一方式配置谁可以访问您的 Cloud Run 服务:向选定的服务账号或群组授予此权限,以允许访问服务。所有请求都必须具有 HTTP 授权标头,其中包含由 Google 为其中一个已获授权的服务账号签名的 OpenID Connect 令牌。
向 allUsers 授予此权限,以允许未经身份验证的访问。
如需了解详情,请参阅 Cloud Run 的访问权限控制。
详细了解令牌类型。
在服务账号列表中,选择将调用目标服务的服务账号。或者,您也可以创建新的服务账号。
这用于指定与流水线关联且您之前向其授予 Eventarc Advanced 所需的特定角色的 IAM 服务账号电子邮件。
点击创建。
gcloud
使用 gcloud CLI 时,请先创建数据流,然后使用适当的命令创建注册。
流水线
打开终端。
使用
gcloud beta eventarc pipelines create
命令创建流水线:gcloud beta eventarc pipelines create PIPELINE_NAME \ --destinations=DESTINATION_KEY \ --location=REGION
替换以下内容:
PIPELINE_NAME
:流水线的 ID 或完全限定名称DESTINATION_KEY
:一个或多个键值对,用于为流水线配置目标位置您必须仅设置以下键之一:
http_endpoint_uri
- 目标 URI。主机可以是可通过 Virtual Private Cloud (VPC) 网络寻址的静态 IP 地址,也可以是可使用 Cloud DNS 解析的服务的内部域名系统 (DNS) 主机名。或者,您还可以设置http_endpoint_message_binding_template
来指定消息绑定。请注意,您可以使用此键定位到将以 HTTP
POST
请求的形式接收事件的 Cloud Run 函数、Cloud Run 作业或 Cloud Run 服务。message_bus
- Eventarc Advanced 总线的 ID。pubsub_topic
- Pub/Sub 主题的 ID。workflow
- Workflows 工作流的 ID。
您必须设置以下键:
network_attachment
:一种资源,允许提供方 VPC 网络发起与使用方 VPC 网络的连接。为了发布事件,Eventarc Advanced 使用网络连接与 VPC 网络中托管的端点建立连接。您可以创建网络连接,以自动接受与该网络连接关联的任何 Private Service Connect 接口发出的连接。在包含目标资源的同一网络和区域中创建网络连接。
如果您要使用 DNS 地址将消息路由到 Google 目的地(例如 Cloud Run、Pub/Sub、Workflows 或其他 Eventarc Advanced 总线),请确保在网络连接中使用的子网上启用了专用 Google 访问通道;否则,DNS 地址将无法解析。
如需启用身份验证,您可以设置以下一个密钥:
google_oidc_authentication_service_account
- 用于生成 OIDC 令牌的服务账号电子邮件地址,可用于许多场景,包括您打算自行验证令牌的端点。(可选)您可以设置google_oidc_authentication_audience
来指定此令牌的目标受众群体。通常,它应与目标流水线的网址匹配。如果未指定,系统会使用整个网址,包括所有请求参数。请注意,Cloud Run 会对每个请求执行 IAM 检查,您可以使用
run.routes.invoke
权限通过以下任一方式配置谁可以访问您的 Cloud Run 服务:向选定的服务账号或群组授予此权限,以允许访问服务。所有请求都必须具有 HTTP 授权标头,其中包含由 Google 为其中一个已获授权的服务账号签名的 OpenID Connect 令牌。
向 allUsers 授予此权限,以允许未经身份验证的访问。
如需了解详情,请参阅 Cloud Run 的访问权限控制 。
oauth_token_authentication_service_account
- 用于生成 OAuth 令牌的服务账号电子邮件地址,通常仅应在调用*.googleapis.com
上托管的 Google API 时使用。您可以选择性地设置oauth_token_authentication_scope
以指定此令牌的范围;否则,它默认为https://www.googleapis.com/auth/cloud-platform
。对于 Google Cloud 服务,最佳实践是使用https://www.googleapis.com/auth/cloud-platform
范围(其中包括所有 Google Cloud API),以及提供精细访问权限控制的 Identity and Access Management (IAM)。请注意,对其他 Eventarc Advanced 总线、Pub/Sub 或 Workflows 的所有请求都必须包含 HTTP 授权标头,其中包含由 Google 为其中一个已获授权的服务账号签名的 OAuth 令牌。
详细了解令牌类型。
可选:您可以设置以下一个按键:
output_payload_format_avro_schema_definition
output_payload_format_json
output_payload_format_protobuf_schema_definition
请注意,如果您设置了输出格式,则还必须指定输入格式(请参阅以下
input-payload-format-*
标志)。
可选:如果
http_endpoint_uri
未用作目标键,您可以设置以下键:project
- 目标资源的 Google Cloud 项目 ID;默认情况下,系统会使用流水线的项目 ID。location
- 目标资源的位置;默认情况下,系统会使用流水线的位置。
REGION
:受支持的 Eventarc Advanced 位置或者,您也可以设置 gcloud CLI 位置属性:
gcloud config set eventarc/location REGION
可选:您可以使用以下标志:
--async
以立即从命令返回,而无需等待正在进行的操作完成。--crypto-key
用于指定客户管理的加密密钥的完全限定名称;如果未指定,则使用 Google 管理的密钥。--logging-config
,用于配置日志记录级别,该级别必须为以下之一:NONE
、DEBUG
、INFO
、NOTICE
、WARNING
、ERROR
、CRITICAL
、ALERT
、EMERGENCY
。--mediations
以应用转换;transformation_template
是唯一支持的模板,并且每个流水线仅支持一个中介;例如:--mediations=transformation_template='message.removeFields(["id\ ","credit_card_number","age"])'
请注意,如果您要应用转换,则必须使用以下某个标志来指定输入格式。
以下任一项,用于指定输入格式:
--input-payload-format-avro-schema-definition
--input-payload-format-json
--input-payload-format-protobuf-schema-definition
--max-retry-attempts
、--max-retry-delay
和--min-retry-delay
重试事件
例如:
gcloud beta eventarc pipelines create my-pipeline \ --destinations=http_endpoint_uri='https://example-endpoint.com',network_attachment=my-network-attachment,oauth_token_authentication_service_account=example-service-account@example-project.gserviceaccount.iam.com,oauth_token_authentication_scope='https://www.googleapis.com/auth/cloud-platform',output_payload_format_avro_schema_definition='{"type": "record","name": "my_record", "fields": [{"name": "my_field", "type":"string"}]}' \ --input-payload-format-avro-schema-definition='{"type":"record", "name": "my_record", "fields": [{"name": "my_field","type": "string"}]}' \ --location=us-central1 \ --async
如需了解详情和示例,请参阅 gcloud CLI 文档。
注册
打开终端。
使用
gcloud beta eventarc enrollments create
命令创建注册:gcloud beta eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=REGION
替换以下内容:
ENROLLMENT_NAME
:注册的 ID 或完全限定名称MATCH_EXPRESSION
:使用 CEL 为此注册表单创建的匹配表达式,例如"message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'"
PIPELINE_NAME
:此注册的目标流水线 ID 或其完全限定名称BUS_NAME
:Eventarc Advanced 总线的 ID 或其完全限定名称PROJECT_ID
:相应数据总线的 Google Cloud 项目 IDREGION
:受支持的 Eventarc Advanced 位置或者,您也可以设置 gcloud CLI 位置属性:
gcloud config set eventarc/location REGION
可选:您可以使用以下标志:
--async
,用于立即从命令返回,而无需等待正在进行的操作完成
例如:
gcloud beta eventarc enrollments create my-enrollment \ --cel-match="message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'" \ --destination-pipeline=my-pipeline \ --message-bus=my-message-bus \ --message-bus-project=another-google-cloud-project \ --location=us-central1 \ --async
删除注册
您可以在 Google Cloud 控制台中或使用 Google Cloud CLI 删除注册。
控制台
如需删除注册,请在 Google Cloud 控制台中,依次前往 Eventarc > 流水线页面。
点击要从中删除注册的流水线的名称。
流水线详情窗格随即会打开。
点击继续。
系统随即会打开注册窗格。
针对要删除的注册,点击
删除图标。点击保存。
gcloud
打开终端。
使用
gcloud beta eventarc enrollments delete
命令删除注册:gcloud beta eventarc enrollments delete ENROLLMENT_NAME \ --location=REGION
替换以下内容:
ENROLLMENT_NAME
:注册的 ID 或完全限定名称REGION
:注册的受支持的 Eventarc Advanced 位置
删除流水线
您可以在 Google Cloud 控制台中或使用 Google Cloud CLI 删除数据流式传输。
请注意,删除流水线可能需要 10 分钟以上。
控制台
如需删除流水线,请在 Google Cloud 控制台中,依次前往 Eventarc > 流水线页面。
在流水线列表中,选中要删除的流水线名称旁边的复选框。
点击
删除。输入
Delete
以确认删除。点击删除。
gcloud
打开终端。
使用
gcloud beta eventarc pipelines delete
命令删除流水线:gcloud beta eventarc pipelines delete PIPELINE_NAME \ --location=REGION
替换以下内容:
PIPELINE_NAME
:流水线的 ID 或完全限定名称REGION
:流水线的受支持的 Eventarc Advanced 位置