创建注册以接收事件

注册标识了对特定总线的订阅。注册定义的匹配条件可决定哪些消息会路由到目的地。此外,注册还会指定匹配的消息路由时应通过的流水线。借助流水线,您可以配置目标目的地,并且在将任何匹配的事件传送到目的地之前,还可以选择对这些事件进行转换。

请注意以下几点:

  • 流水线和注册必须在同一 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 Console 中
  • 在终端或 Cloud Shell 中使用 Google Cloud CLI
  • 向 Eventarc API 发送请求

在 Google Cloud 控制台中,您可以通过流水线页面同时创建流水线和注册。

  1. 如需创建注册,请在 Google Cloud 控制台中依次前往 Eventarc > 流水线页面。

    打开“流水线”

  2. 点击 创建流水线

  3. 流水线详情窗格中,执行以下操作:

    1. 输入流水线名称。这是您的流水线的 ID。
    2. 区域列表中,选择要部署流水线的区域。流水线必须在与总线相同的区域内创建。如需了解详情,请参阅 Eventarc Advanced 位置
    3. 可选:在日志严重性列表中,为日志条目中所述的事件选择最低严重性。默认值为 None。如需了解详情,请参阅 LogSeverity
    4. 可选:在重试政策部分中,您可以修改默认配置以重试事件
    5. 对于加密部分,接受默认的 Google-managed encryption key 或选择 Cloud KMS 密钥。如需了解详情,请参阅使用客户管理的加密密钥 (CMEK)
    6. 如果您选择 Cloud KMS 密钥,请执行以下操作:

      1. 密钥类型列表中,选择一种密钥管理方法。

        您可以手动管理密钥,也可以使用 Autokey 按需生成密钥环和密钥。如果 Autokey 选项处于停用状态,则表明其尚未与当前的资源类型集成。

      2. 选择客户管理的密钥中,选择一个密钥。

        请注意,您必须先选择区域,然后才能查看客户管理的密钥。

      3. 可选:如需手动输入密钥的资源名称,请在选择客户管理的密钥列表中,点击手动输入密钥,然后以指定的格式输入密钥名称。

      4. 如果出现提示,请将 cloudkms.cryptoKeyEncrypterDecrypter 角色授予 Eventarc 服务代理

    7. 可选:如需添加标签,请点击 添加标签。标签是有助于您整理Google Cloud 资源的键值对。如需了解详情,请参阅什么是标签?

    8. 点击继续

  4. 注册窗格中,执行以下操作:

    1. 点击添加注册
    2. 输入注册名称
    3. 总线列表中,选择要订阅的总线。
    4. CEL 表达式字段中,使用 CEL 编写评估表达式。例如:

      message.type == "google.cloud.dataflow.job.v1beta3.statusChanged"

      请注意,默认表达式 true 表示所有消息均会被路由,而不会被过滤。

    5. 点击完成

    6. 您可以添加其他注册,或点击继续

  5. 可选:在事件中介窗格中,执行以下操作或点击继续

    1. 选中应用转换复选框。
    2. 入站格式列表中,选择适用的格式。

      请注意,在应用转换时,您必须为流水线指定入站数据格式,并且所有事件都必须符合该格式。

    3. 对于 Avro 或 Protobuf 格式,您必须指定入站架构。(可选)您可以上传入站架构。如需了解详情,请参阅设置已接收事件的格式

    4. CEL 表达式字段中,使用 CEL 编写转换表达式。

    5. 点击继续

  6. 目标窗格中,执行以下操作:

    1. 目标类型列表中,选择要将消息路由到的目标类型。根据目标类型,执行以下操作:

      • HTTP 端点:指定目标 URI。主机可以是可从虚拟私有云 (VPC) 网络寻址的静态 IP,也可以是可使用 Cloud DNS 解析的服务的内部域名系统 (DNS) 主机名。

        请注意,您可以使用此目标类型来定位 Cloud Run 函数

      • Eventarc Advanced 总线:选择 Eventarc Advanced 总线

      • Workflows 工作流:选择 Workflows 工作流

      • Pub/Sub 主题:选择或创建 Pub/Sub 主题

      • Cloud Run 服务(通过 HTTP):选择 Cloud Run 服务,该服务将以 HTTP POST 请求的形式接收已发送到其根网址路径 (/) 的事件;您也可以在目标服务上指定事件应该被发送到的相对网址路径。

      • Cloud Run 作业(通过 HTTP):选择将以 HTTP POST 请求的形式接收事件的 Cloud Run 作业

    2. 指定网络连接。

      网络连接是一种资源,它允许提供方 VPC 网络发起与使用方 VPC 网络的连接。为了发布事件,Eventarc Advanced 使用网络连接,与 VPC 网络中托管的端点建立连接。

      您可以创建网络连接,以自动接受与该网络连接关联的任何 Private Service Connect 接口发出的连接。在包含目标端点的同一网络和区域中创建网络连接。

      如果您要使用 DNS 地址将消息路由到 Google 目的地(例如 Cloud Run、Pub/Sub、Workflows 或其他 Eventarc Advanced 总线),请确保在网络连接中使用的子网上启用了专用 Google 访问通道;否则,DNS 地址将无法解析。

    3. 如果适用,请在出站格式列表中选择一种格式。

      请注意,如果没有为流水线指定入站数据格式,则无法设置出站格式。

    4. 如果适用,请应用消息绑定。如需了解详情,请参阅定义消息绑定

    5. 如需启用身份验证,请选中启用身份验证复选框。

      1. 身份验证标头列表中,选择要生成的令牌类型,并在 HTTP 请求中作为 Authorization 标头附加:

        • 通常,只有在调用 *.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 令牌。

          • 所有用户授予此权限,以允许未经身份验证的访问。

          如需了解详情,请参阅 Cloud Run 的访问权限控制

        详细了解令牌类型

      2. 服务账号列表中,选择将调用目标服务的服务账号。或者,您可以创建新的服务账号。

        这会指定与流水线关联且您之前向其授予了 Eventarc Advanced 所需的特定角色的 IAM 服务账号电子邮件。

  7. 点击创建

当使用 gcloud CLI 时,请使用相应命令,首先创建流水线,然后再创建注册。

  1. 打开终端。

  2. 使用 gcloud beta eventarc pipelines create 命令创建流水线:

    gcloud beta eventarc pipelines create PIPELINE_NAME \
        --destinations=DESTINATION_KEY \
        --location=REGION

    替换以下内容:

    • PIPELINE_NAME:流水线的 ID 或完全限定名称
    • DESTINATION_KEY:一个或多个键值对,用于为流水线配置目标

      您必须只设置以下其中一个键:

      您必须设置以下键:

      • 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 令牌。

        • 所有用户授予此权限,以允许未经身份验证的访问。

        如需了解详情,请参阅 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-owned and managed keys 。
    • --logging-config - 配置日志记录级别,这必须是以下之一:NONEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY
    • --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 文档

  1. 打开终端。

  2. 使用 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 项目 ID
    • REGION受支持的 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
    

如需创建流水线,请使用 projects.locations.pipelines.create 方法。

在使用任何请求数据之前,请先进行以下替换:

  • name:流水线的完整资源名称,格式为 projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME

    替换以下内容:

    • PROJECT_ID:流水线项目的 Google Cloud项目 ID
    • LOCATION:要部署流水线的区域,例如 us-central1
    • PIPELINE_NAME:流水线的名称
  • LABEL_KEYLABEL_VALUE:可选。标签键值对映射,可帮助您整理 Google Cloud 资源。如需了解详情,请参阅什么是标签?
  • ANNOTATION_KEYANNOTATION_VALUE:可选。自由形式文本的注解键值对的映射。您可以使用它们来附加与资源关联的任意信息。如需了解详情,请参阅注解
  • LOG_SEVERITY:可选。日志条目中所述事件的最低严重性。以下之一:NONEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY。默认值为 NONE。如需了解详情,请参阅 LogSeverity
  • destinations:消息将转发到的目标。仅支持一个目标:httpEndpointmessageBustopicworkflow。如需了解详情,请参阅 Destination 目标。例如,请替换以下内容:
    • HTTP_URI:目标 URI。主机可以是可从虚拟私有云 (VPC) 网络寻址的静态 IP,也可以是可使用 Cloud DNS 解析的服务的内部域名系统 (DNS) 主机名。(可选)您也可以设置 messageBindingTemplate 以指定消息绑定
    • networkAttachment:网络连接的完整资源名称,格式为:projects/NETWORK_ATTACHMENT_PROJECT_ID/regions/NETWORK_ATTACHMENT_LOCATION /networkAttachments/NETWORK_ATTACHMENT_NAME。网络连接是一种资源,允许提供方虚拟私有云网络发起与使用方 VPC 网络的连接,并且您必须指定它。为了发布事件,Eventarc Advanced 使用网络连接,与 VPC 网络中托管的端点建立连接。

      您可以创建网络连接,以自动接受与该网络连接关联的任何 Private Service Connect 接口发出的连接。在包含目标资源的同一网络和区域中创建网络连接。

      如果您要使用 DNS 地址将消息路由到 Google 目的地(例如 Cloud Run、Pub/Sub、Workflows 或其他 Eventarc Advanced 总线),请确保在网络连接中使用的子网上启用了专用 Google 访问通道;否则,DNS 地址将无法解析。

    • SERVICE_ACCOUNT_EMAIL:用于生成 OIDC 令牌的服务账号电子邮件的名称,该令牌可用于许多场景,其中包括您打算自行验证令牌的端点。(可选)您可以设置 audience 以指定此令牌的目标受众群体。通常,它应与目标流水线的网址匹配。如果它尚未指定,那么系统会使用整个网址(包括所有请求参数)。

      或者,您可以使用 oauthToken 指定用于生成 OAuth 令牌的服务账号电子邮件,通常,只有在调用 *.googleapis.com 上托管的 Google API 时,才应使用该令牌。(可选)您可以设置 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 令牌。

      详细了解令牌类型

请求 JSON 正文:

{
  "name": "projects/PROJECT_ID/regions/LOCATION/pipelines/PIPELINE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"},
  "destinations": [{"httpEndpoint": {"uri": "HTTP_URI"},"networkConfig":
  {"networkAttachment": "projects/NETWORK_ATTACHMENT_PROJECT_ID/regions/NETWORK_ATTACHMENT_LOCATION/networkAttachments/NETWORK_ATTACHMENT_NAME"},
  "authenticationConfig": {"googleOidc": {"serviceAccount": "SERVICE_ACCOUNT_EMAIL"}}}]
}

如需发送您的请求,请展开以下选项之一:

将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

cat > request.json << 'EOF'
{
  "name": "projects/PROJECT_ID/regions/LOCATION/pipelines/PIPELINE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"},
  "destinations": [{"httpEndpoint": {"uri": "HTTP_URI"},"networkConfig":
  {"networkAttachment": "projects/NETWORK_ATTACHMENT_PROJECT_ID/regions/NETWORK_ATTACHMENT_LOCATION/networkAttachments/NETWORK_ATTACHMENT_NAME"},
  "authenticationConfig": {"googleOidc": {"serviceAccount": "SERVICE_ACCOUNT_EMAIL"}}}]
}
EOF

然后,执行以下命令以发送 REST 请求:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelines?pipeline_id=PIPELINE_NAME"

将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

@'
{
  "name": "projects/PROJECT_ID/regions/LOCATION/pipelines/PIPELINE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"},
  "destinations": [{"httpEndpoint": {"uri": "HTTP_URI"},"networkConfig":
  {"networkAttachment": "projects/NETWORK_ATTACHMENT_PROJECT_ID/regions/NETWORK_ATTACHMENT_LOCATION/networkAttachments/NETWORK_ATTACHMENT_NAME"},
  "authenticationConfig": {"googleOidc": {"serviceAccount": "SERVICE_ACCOUNT_EMAIL"}}}]
}
'@  | Out-File -FilePath request.json -Encoding utf8

然后,执行以下命令以发送 REST 请求:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelines?pipeline_id=PIPELINE_NAME" | Select-Object -Expand Content

复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行

如果成功,响应正文将包含一个新创建的 Operation 实例:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

如需创建注册,请使用 projects.locations.enrollments.create 方法。

在使用任何请求数据之前,请先进行以下替换:

  • ENROLLMENT_NAME:注册的显示名称,例如 my_enrollment
  • MATCH_EXPRESSIONCEL 表达式,用于标识此注册适用于哪些消息。例如 message.type == 'hello-world-type'
  • destination:目标流水线的完整资源名称,格式为 projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME

    替换以下内容:

    • PROJECT_ID:流水线项目的 Google Cloud项目 ID
    • LOCATION:部署流水线的区域,例如 us-central1
    • PIPELINE_NAME:流水线的名称
  • message_bus:标识消息来源的总线的完整资源名称,格式为 projects/BUS_PROJECT_ID/locations/BUS_LOCATION/messageBuses/BUS_NAME

    替换以下内容:

    • BUS_PROJECT_ID:总线项目的 Google Cloud 项目 ID
    • BUS_LOCATION:部署总线的区域,例如 us-central1
    • BUS_NAME:消息总线的名称

请求 JSON 正文:

{
  "display_name": "ENROLLMENT_NAME",
  "cel_match": "MATCH_EXPRESSION",
  "message_bus": "projects/BUS_PROJECT_ID/locations/BUS_LOCATION/messageBuses/BUS_NAME",
  "destination": "projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME"
}

如需发送您的请求,请展开以下选项之一:

将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

cat > request.json << 'EOF'
{
  "display_name": "ENROLLMENT_NAME",
  "cel_match": "MATCH_EXPRESSION",
  "message_bus": "projects/BUS_PROJECT_ID/locations/BUS_LOCATION/messageBuses/BUS_NAME",
  "destination": "projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME"
}
EOF

然后,执行以下命令以发送 REST 请求:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/enrollments?enrollment_id=ENROLLMENT_NAME"

将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

@'
{
  "display_name": "ENROLLMENT_NAME",
  "cel_match": "MATCH_EXPRESSION",
  "message_bus": "projects/BUS_PROJECT_ID/locations/BUS_LOCATION/messageBuses/BUS_NAME",
  "destination": "projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME"
}
'@  | Out-File -FilePath request.json -Encoding utf8

然后,执行以下命令以发送 REST 请求:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/enrollments?enrollment_id=ENROLLMENT_NAME" | Select-Object -Expand Content

复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行

如果成功,响应正文将包含一个新创建的 Operation 实例:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/enrollments/ENROLLMENT_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

删除注册

您可以通过以下方式删除注册:

  • 在 Google Cloud Console 中
  • 在终端或 Cloud Shell 中使用 gcloud CLI
  • 向 Eventarc API 发送请求

  1. 如需删除注册,请在 Google Cloud 控制台中依次前往 Eventarc > 流水线页面。

    打开“流水线”

  2. 点击要从中删除注册的流水线的名称。

    此时会打开流水线详情窗格。

  3. 点击继续

    此时会打开注册窗格。

  4. 对于要删除的注册,请点击 删除图标。

  5. 点击保存

  1. 打开终端。

  2. 使用 gcloud beta eventarc enrollments delete 命令删除注册:

    gcloud beta eventarc enrollments delete ENROLLMENT_NAME \
          --location=REGION

    替换以下内容:

如需删除注册,请使用 projects.locations.enrollments.delete 方法。

在使用任何请求数据之前,请先进行以下替换:

  • ENROLLMENT_NAME:要删除的注册的显示名称,例如 my_enrollment
  • PROJECT_ID:您的 Google Cloud项目 ID。
  • LOCATION:部署注册的区域,例如 us-central1

如需发送您的请求,请展开以下选项之一:

执行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/enrollments/ENROLLMENT_NAME"

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/enrollments/ENROLLMENT_NAME" | Select-Object -Expand Content

打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

如果成功,响应正文将包含一个新创建的 Operation 实例:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/enrollments/ENROLLMENT_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

删除流水线

您可以通过以下方式删除流水线:

  • 在 Google Cloud Console 中
  • 在终端或 Cloud Shell 中使用 gcloud CLI
  • 向 Eventarc API 发送请求

请注意,删除流水线可能需要 10 多分钟时间。

  1. 如需删除流水线,请在 Google Cloud 控制台中依次前往 Eventarc > 流水线页面。

    打开“流水线”

  2. 在流水线列表中,选中要删除的流水线名称旁边的复选框。

  3. 点击 删除

  4. 输入 Delete 以确认删除。

  5. 点击删除

  1. 打开终端。

  2. 使用 gcloud beta eventarc pipelines delete 命令删除流水线:

    gcloud beta eventarc pipelines delete PIPELINE_NAME \
          --location=REGION

    替换以下内容:

如需删除流水线,请使用 projects.locations.pipelines.delete 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PIPELINE_NAME:要删除的流水线的显示名称,例如 my_pipeline
  • PROJECT_ID:您的 Google Cloud项目 ID。
  • LOCATION:部署流水线的区域,例如 us-central1

如需发送您的请求,请展开以下选项之一:

执行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME"

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://eventarc.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME" | Select-Object -Expand Content

打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 填写所有必填字段,然后点击执行

如果成功,响应正文将包含一个新创建的 Operation 实例:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/pipelines/PIPELINE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

后续步骤