将事件路由到 VPC 网络中的内部 HTTP 端点

Eventarc 触发器声明您对某个事件或一系列事件感兴趣。如需配置事件路由,您可以为触发器指定过滤条件,包括事件来源和目标目的地。

Eventarc 通过 HTTP 请求以 CloudEvents 格式将事件传送到事件接收器。

以下说明介绍如何为所有事件类型配置到 Virtual Private Cloud (VPC) 网络中的内部 HTTP 端点的事件路由。如需配置触发器,您还必须提供网络 ID。

  • 支持的事件类型:

    • 直接事件 - 由更新 Cloud Storage 存储桶中的对象或消息发布到 Pub/Sub 主题等无中介事件触发。

    • Cloud Audit Logs 事件 - 通过 Cloud Audit Logs 生成日志时触发。

    • 第三方事件 - 由提供 Eventarc 来源的非 Google 提供方的事件触发。

  • 内部 HTTP 端点可以是 Virtual Private Cloud 网络中任何 HTTP 端点的内部 IP 地址完全限定的 DNS 名称 (FQDN)。以下是可能的事件目的地的两个示例:

    • Compute Engine 虚拟机 (VM) 实例 - Compute Engine 实例可以运行 Google 提供的适用于 Linux 和 Windows Server 的公共映像,也可以运行您可以创建的或者从现有系统导入的私有自定义映像。如需了解详情,请参阅虚拟机实例
    • 内部负载均衡器 - Google Cloud 内部应用负载均衡器是一种基于代理的区域级第 7 层负载均衡器,可让您在内部 IP 地址后面运行和扩缩您的服务。内部应用负载均衡器会将 HTTP 和 HTTPS 流量分发到 Compute Engine、Google Kubernetes Engine (GKE) 和 Cloud Run 上托管的后端。如需了解详情,请参阅内部应用负载均衡器概览
  • VPC 网络是物理网络的虚拟版本,在 Google 的生产网络内实现。 共享 VPC 网络是在宿主项目中定义的 VPC 网络,它用作关联的服务项目中合格资源的集中共享网络。

  • 网络连接是一种区域级资源,可让您明确授权提供方连接到使用方 VPC 网络。为了发布事件,Eventarc 使用网络连接与 VPC 网络中托管的内部 HTTP 端点建立连接。

准备工作

在创建 Eventarc 触发器以将事件路由到 VPC 网络中的内部 HTTP 端点之前,您必须创建一个网络连接,该连接接受包含 HTTP 目的地服务的同一网络和区域中的连接。

以下说明假定您已创建 VPC 网络和子网,并且已部署 HTTP 目的地服务。

如需了解详情,请参阅在 VPC 网络中的内部 HTTP 端点上接收 Pub/Sub 事件,它演示如何在 VPC 网络和路由中部署内部 HTTP 端点以及将 Pub/Sub 事件路由到端点。

已知限制

以下是将事件路由到 VPC 网络中的内部 HTTP 端点的已知限制:

  • 不能为同一 DNS 名称创建多个 Eventarc 触发器。

  • 每个项目的内部 HTTP 端点最多只能有 100 个 Eventarc 触发器。

  • 仅支持以下 Eventarc 触发器位置:

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

准备创建触发器

在创建触发器之前,请先完成以下前提条件:

控制台

  1. 在 Google Cloud 控制台的“项目选择器”页面上,选择或创建 Google Cloud 项目

    转到“项目选择器”

  2. 启用 Cloud Logging 和 Eventarc API。

    启用 API

  3. 如果适用,请启用与直接事件相关的 API。例如,对于 Cloud Functions 事件,请启用 cloudfunctions.googleapis.com

  4. 如果您还没有用户管理的服务账号,请创建一个,然后为其授予必要的角色和权限,以便 Eventarc 可以管理目标服务的事件。

    1. 在 Google Cloud 控制台中,进入创建服务账号页面。

      转到“创建服务账号”

    2. 选择您的项目。

    3. 服务账号名称字段中,输入一个名称。Google Cloud 控制台会根据此名称填充服务账号 ID 字段。

      服务账号说明字段中,输入说明。例如 Service account for event trigger

    4. 点击创建并继续

    5. 如需提供适当的访问权限,请在选择角色列表中,选择要向服务账号授予的所需 Identity and Access Management (IAM) 角色。如需了解详情,请参阅 VPC 网络中内部 HTTP 端点的角色和权限

      如需添加其他角色,请点击 添加其他角色,然后添加其他各个角色。

    6. 点击继续

    7. 如需完成账号的创建过程,请点击完成

  5. 如果您要为来自 Cloud Storage 的直接事件创建触发器,请向 Cloud Storage 服务代理授予 Pub/Sub Publisher 角色 (roles/pubsub.publisher):

    1. 在 Google Cloud 控制台中,转到 IAM 页面。

      转到 IAM

    2. 选中包括 Google 提供的角色授权复选框。

    3. 主账号列中,找到格式为 service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com 的 Cloud Storage 服务代理,然后在对应的行中点击 修改主账号

    4. 点击 添加角色 添加其他角色

    5. 选择角色列表中,筛选出 Pub/Sub Publisher,然后选择该角色。

    6. 点击保存

  6. 如果 VPC 网络中的内部 HTTP 端点的 URI 使用可由 Cloud DNS 解析的服务的内部 DNS 名称,请向 Eventarc 服务代理授予 VPC 宿主项目的 DNS Peer 角色 (roles/dns.peer)。

    请注意,VPC 宿主项目也可以是 Eventarc 触发器项目,具体取决于您配置 VPC 网络的方式。

    1. 在 Google Cloud 控制台中的项目选择器页面上,选择 VPC 宿主项目。

      转到“项目选择器”

    2. 在 Google Cloud 控制台中,转到 IAM 页面。

      转到 IAM

    3. 选中包括 Google 提供的角色授权复选框。

    4. 修改 Eventarc 服务代理或将其添加为主账号:

      • 如果 Eventarc 服务代理已拥有项目的其他角色,请找到包含格式为 service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com 的主账号的行,在该行中点击 修改主账号,然后点击 添加其他角色

      • 如果 Eventarc 服务代理没有项目的任何现有角色,请点击 授予访问权限,然后输入以下格式的电子邮件地址:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

      PROJECT_NUMBER 替换为 Eventarc 触发器项目的 Google Cloud 项目编号。您可以在 Google Cloud 控制台的欢迎页面上或者通过运行以下命令找到项目编号:

      gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    5. 选择角色列表中,筛选出 DNS Peer,然后选择该角色。

    6. 点击保存

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  2. 启用 Cloud Logging、Eventarc 和 Eventarc Publishing API。

    gcloud services enable logging.googleapis.com \
      eventarc.googleapis.com \
      eventarcpublishing.googleapis.com
    
  3. 如果适用,请启用与事件相关的 API。例如,对于 Cloud Functions 事件,请启用 cloudfunctions.googleapis.com

  4. 如果您还没有用户管理的服务账号,请创建一个,然后为其授予必要的角色和权限,以便 Eventarc 可以管理目标服务的事件。

    1. 创建服务账号:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      

      SERVICE_ACCOUNT_NAME 替换为服务账号的名称。该名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。在服务账号创建完毕后,无法再更改其名称。

    2. 授予所需的 Identity and Access Management (IAM) 角色或权限。如需了解详情,请参阅 VPC 网络中内部 HTTP 端点的角色和权限

  5. 如果 VPC 网络中的内部 HTTP 端点的 URI 使用可由 Cloud DNS 解析的服务的内部 DNS 名称,请向 Eventarc 服务代理授予 VPC 宿主项目的 DNS Peer 角色 (roles/dns.peer)。

    请注意,VPC 宿主项目也可以是 Eventarc 触发器项目,具体取决于您配置 VPC 网络的方式。

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

    替换以下内容:

    • VPC_HOST_PROJECT_ID:VPC 宿主项目的 Google Cloud 项目 ID。
    • PROJECT_NUMBER:Eventarc 触发器项目的 Google Cloud 项目编号。您可以在 Google Cloud 控制台的欢迎页面上或者通过运行以下命令找到项目编号:
    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  6. 如果要为来自 Cloud Storage 的直接事件创建触发器,请向 Cloud Storage 服务代理授予项目的 Pub/Sub Publisher 角色 (roles/pubsub.publisher):

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

创建触发器

您可以使用 Google Cloud CLI 或通过 Google Cloud 控制台创建 Eventarc 触发器。

控制台

  1. 在 Google Cloud 控制台中,进入 Eventarc 触发器页面。

    转到“触发器”

  2. 点击 创建触发器
  3. 输入触发器名称

    这是触发器的 ID,必须以字母开头。最多可包含 63 个小写字母、数字或连字符。

  4. 对于触发器类型,选择 Google 来源第三方
  5. 选择事件提供方

    这是作为事件来源的服务。对于 Google 来源,可以是直接来源,也可以是通过审核日志。

  6. 根据您要路由的事件类型,执行以下操作之一:
    1. 直接事件 - 在事件类型列表中,从“直接”事件中选择一种事件类型。
      1. 对于直接 Cloud Pub/Sub 事件,在选择 Cloud Pub/Sub 主题列表中,选择一个主题或接受默认值,以便系统为您创建一个新主题。
      2. 对于直接 Cloud Storage 事件,指定或浏览以选择 Cloud Storage 存储桶的全局唯一标识符。
    2. 审核日志事件 - 在事件类型列表中,从“通过 Cloud Audit Logs”事件中选择一种事件类型,然后选择以下选项之一:
      • 任何资源 - 这是默认选项,其中包含动态创建的资源,这些资源会在创建时生成标识符。
      • 特定资源 - 必须提供完整的资源名称。
      • 路径模式 - 可以使用路径模式过滤资源。 例如,输入 projects/_/buckets/eventarc-bucket/objects/random.txt 或输入 projects/_/buckets/**/r*.txt
    3. 第三方事件 - 在渠道列表中选择一个渠道,然后在事件类型列表中选择一个事件。

      如需了解详情,请参阅创建渠道并检索其详细信息

  7. 如果适用于事件类型,请在事件数据内容类型列表中选择 application/jsonapplication/protobuf,以指定事件载荷的编码。

    请注意,采用 JSON 格式的事件载荷大于采用 Protobuf 格式的事件载荷。这可能会影响可靠性,具体取决于您的事件目标及其事件大小限制。如需了解详情,请参阅已知问题

  8. 如果适用于事件提供方,请点击添加过滤条件并指定以下内容:
    1. 属性 1 字段中,根据您选择的直接事件,选择可用作事件过滤条件的资源 ID
    2. 选择一个运算符:
    3. 属性值 1 字段中,根据您选择的运算符,输入确切的值或应用路径模式。
    4. 如果属性 2 字段适用,请指定适当的值。
  9. 区域列表中,选择一个位置。

    为避免任何性能和数据驻留问题,位置必须与生成事件的 Google Cloud 服务的位置匹配。

    请注意,此事件目的地位置仅支持以下位置:

    • asia-east1
    • europe-north1
    • europe-west1
    • us-east1

    如需了解详情,请参阅 Eventarc 位置

  10. 选择将调用您的服务的服务账号

    或者,您可以创建新的服务账号。

    这会指定与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务账号电子邮件地址。

  11. 事件目的地列表中,选择 HTTP 端点(内部)
    1. 指定目的地 URI。这是 VPC 网络中接收触发器的事件的内部 HTTP 端点的 URI。URI 可以是 VPC 网络中由网络连接寻址的静态内部 IP 地址,也可以是 Cloud DNS 可解析的服务的内部 DNS 名称

      如果 HTTP 端点使用内部 DNS 名称,Eventarc 会自动创建 DNS 对等互连区域并将 DNS 请求转发到目标 VPC 网络中的 DNS 区域。借助 DNS 对等互连功能,您可以将一个区域的命名空间内记录的请求发送至另一个 VPC 网络。如需了解详情,请参阅对等互连区域创建对等互连区域

      请注意,您不能为同一 DNS 名称创建多个触发器。

    2. 网络连接列表中,选择网络连接的资源的标识符。此标识符在您创建网络连接后生成。如需了解详情,请参阅创建网络连接

      网络连接允许服务提供方 VPC 网络发起与使用方 VPC 网络的连接。Eventarc 使用网络连接与使用方的 VPC 网络中托管的内部 HTTP 端点建立连接并发布事件。

      创建网络连接时,您可以通过提供方接受和拒绝列表明确授权连接:如此一来,Eventarc 就可以使用适当的项目 ID 更新网络连接的接受列表,而无需您进行任何干预。

  12. 点击创建
  13. 创建触发器之后,您便无法修改事件来源过滤条件。请创建新触发器,并删除先前的触发器。如需了解详情,请参阅管理触发器

gcloud

您可以通过运行包含必需和可选标志的 gcloud eventarc triggers create 命令来创建触发器。

直接事件

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="COLLECTION_ID=RESOURCE_ID" \
    --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1

    为避免任何性能和数据驻留问题,该位置必须与生成事件的 Google Cloud 服务的位置匹配。

    请注意,此事件目的地位置仅支持以下位置:

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

    如需了解详情,请参阅 Eventarc 位置

  • ENDPOINT_URI:VPC 网络中接收触发器的事件的内部 HTTP 端点的 URI。URI 可以是 VPC 网络中由网络连接寻址的静态内部 IP 地址,也可以是 Cloud DNS 可解析的服务的内部 DNS 名称

    如果 HTTP 端点使用内部 DNS 名称,Eventarc 会自动创建 DNS 对等互连区域并将 DNS 请求转发到目标 VPC 网络中的 DNS 区域。借助 DNS 对等互连功能,您可以将一个区域的命名空间内记录的请求发送至另一个 VPC 网络。如需了解详情,请参阅对等互连区域创建对等互连区域

    请注意,您不能为同一 DNS 名称创建多个触发器。

  • NETWORK_ATTACHMENT_ID:网络连接资源的唯一标识符。此标识符是在创建网络连接后生成的。如需了解详情,请参阅创建网络连接

    网络连接允许服务提供方 VPC 网络发起与使用方 VPC 网络的连接。Eventarc 使用网络连接与使用方的 VPC 网络中托管的内部 HTTP 端点建立连接并发布事件。

    创建网络连接时,您可以通过提供方接受和拒绝列表明确授权连接:如此一来,Eventarc 就可以使用适当的项目 ID 更新网络连接的接受列表,而无需您进行任何干预。

  • EVENT_FILTER_TYPE:事件的标识符。 方法的 API 调用成功时会生成事件。 对于长时间运行的操作,事件仅会在操作结束时生成,并且仅在操作成功执行时才会生成。请参阅受支持的直接事件类型列表。

  • COLLECTION_ID(可选):可充当事件过滤条件的资源组件;例如,对于 Cloud Functions,这是 function

  • RESOURCE_ID:用作关联集合的过滤值的资源的标识符。如需了解详情,请参阅资源 ID

  • PATH_PATTERN:过滤资源时要应用的路径模式

  • SERVICE_ACCOUNT_NAME:用户管理的服务账号的名称。

  • PROJECT_ID:您的 Google Cloud 项目 ID。

备注:

  • --event-filters="type=EVENT_FILTER_TYPE" 标志是必需的。 如果未设置其他事件过滤条件,则匹配所有资源的事件。
  • EVENT_FILTER_TYPE 在创建后无法更改。如需更改 EVENT_FILTER_TYPE,请创建一个新触发器并删除先前的触发器。
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目的地。不支持通配符和正则表达式;但是,使用 --event-filters-path-pattern 标志时,您可以定义资源路径模式
  • --service-account 标志用于指定与触发器关联的 IAM 服务账号电子邮件。

示例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://my-vm.us-central1-a.c.my-project.internal \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment-name" \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

审核日志事件

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1

    为避免任何性能和数据驻留问题,该位置必须与生成事件的 Google Cloud 服务的位置匹配。系统支持以下位置:

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

    如需了解详情,请参阅 Eventarc 位置

  • ENDPOINT_URI:VPC 网络中接收触发器的事件的内部 HTTP 端点的 URI。URI 可以是 VPC 网络中由网络连接寻址的静态内部 IP 地址,也可以是 Cloud DNS 可解析的服务的内部 DNS 名称

    如果 HTTP 端点使用内部 DNS 名称,Eventarc 会自动创建 DNS 对等互连区域并将 DNS 请求转发到目标 VPC 网络中的 DNS 区域。借助 DNS 对等互连功能,您可以将一个区域的命名空间内记录的请求发送至另一个 VPC 网络。如需了解详情,请参阅对等互连区域创建对等互连区域

    请注意,您不能为同一 DNS 名称创建多个触发器。

  • NETWORK_ATTACHMENT_ID:网络连接资源的唯一标识符。此标识符是在创建网络连接后生成的。如需了解详情,请参阅创建网络连接

    网络连接允许服务提供方 VPC 网络发起与使用方 VPC 网络的连接。Eventarc 使用网络连接与使用方的 VPC 网络中托管的内部 HTTP 端点建立连接并发布事件。

    创建网络连接时,您可以通过提供方接受和拒绝列表明确授权连接:如此一来,Eventarc 就可以使用适当的项目 ID 更新网络连接的接受列表,而无需您进行任何干预。

  • SERVICE_NAME:Google Cloud 服务的标识符。 请参阅受支持的审核日志事件类型列表。

  • METHOD_NAME:操作的标识符。 请参阅受支持的审核日志事件类型列表。

  • SERVICE_ACCOUNT_NAME:用户管理的服务账号的名称。

  • PROJECT_ID:您的 Google Cloud 项目 ID。

备注:

  • 这些标志是必需的:
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • (可选)如需过滤特定资源的事件,您可以使用 --event-filters="resourceName=VALUE" 标志并指定资源的完整路径。忽略动态创建的资源的标志,系统在创建这些资源时会生成标识符。或者,您可以使用 --event-filters-path-pattern="resourceName=VALUE" 标志并指定资源路径模式来过滤一组资源的事件。
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目的地。不支持通配符和正则表达式;但是,使用 --event-filters-path-pattern 标志时,您可以定义资源路径模式
  • 触发器创建后,事件过滤条件类型便无法更改。 对于其他事件类型,您必须创建新的触发器。
  • --service-account 标志用于指定与触发器关联的 IAM 服务账号电子邮件。

示例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://10.10.10.2 \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment" \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=eventarc.googleapis.com" \
    --event-filters="methodName=google.cloud.eventarc.v1.Eventarc.GetTrigger" \
    --event-filters="resourceName=projects/my-project/locations/us-central1/triggers/my-trigger" \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

第三方事件

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --channel=CHANNEL_NAME \
    --project=PROJECT_ID \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1

    为避免任何性能和数据驻留问题,该位置必须与生成事件的 Google Cloud 服务的位置匹配。

    请注意,此事件目的地位置仅支持以下位置:

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

    如需了解详情,请参阅 Eventarc 位置

  • ENDPOINT_URI:VPC 网络中接收触发器的事件的内部 HTTP 端点的 URI。URI 可以是 VPC 网络中由网络连接寻址的静态内部 IP 地址,也可以是 Cloud DNS 可解析的服务的内部 DNS 名称

    如果 HTTP 端点使用内部 DNS 名称,Eventarc 会自动创建 DNS 对等互连区域并将 DNS 请求转发到目标 VPC 网络中的 DNS 区域。借助 DNS 对等互连功能,您可以将一个区域的命名空间内记录的请求发送至另一个 VPC 网络。如需了解详情,请参阅对等互连区域创建对等互连区域

    请注意,您不能为同一 DNS 名称创建多个触发器。

  • NETWORK_ATTACHMENT_ID:网络连接资源的唯一标识符。此标识符是在创建网络连接后生成的。如需了解详情,请参阅创建网络连接

    网络连接允许服务提供方 VPC 网络发起与使用方 VPC 网络的连接。Eventarc 使用网络连接与使用方的 VPC 网络中托管的内部 HTTP 端点建立连接并发布事件。

    创建网络连接时,您可以通过提供方接受和拒绝列表明确授权连接:如此一来,Eventarc 就可以使用适当的项目 ID 更新网络连接的接受列表,而无需您进行任何干预。

  • EVENT_FILTER_TYPE:提供方支持的事件类型。请参阅受支持的第三方事件类型列表。

  • CHANNEL_NAME:渠道的名称。如需了解详情,请参阅创建渠道并检索其详细信息

  • PROJECT_ID:您的 Google Cloud 项目 ID。

  • SERVICE_ACCOUNT_NAME:用户管理的服务账号的名称。

备注:

  • --event-filters="type=EVENT_FILTER_TYPE" 标志是必需的。 如果未设置其他事件过滤条件,则匹配所有资源的事件。
  • EVENT_FILTER_TYPE 在创建后无法更改。如需更改 EVENT_FILTER_TYPE,请创建一个新触发器并删除先前的触发器。
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目的地。不支持通配符和正则表达式。
  • --service-account 标志用于指定与触发器关联的 IAM 服务账号电子邮件。

示例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://my-vm.us-central1-a.c.my-project.internal \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment-name" \
    --event-filters="type=third-party-event-type" \
    --channel=my-channel \
    --project=my-project-ID \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

列出触发器

如需确认触发器已创建,您可以使用 Google Cloud CLI 或通过 Google Cloud 控制台列出 Eventarc 触发器。

控制台

  1. 在 Google Cloud 控制台中,进入 Eventarc 触发器页面。

    转到“触发器”

    此页面会列出所有位置的触发器,并包含名称、区域、事件提供方、目标位置等详细信息。

  2. 如需过滤触发器,请执行以下操作:

    1. 点击 过滤过滤触发器字段。
    2. 属性列表中,选择要作为触发器过滤条件的选项。

    您可以选择单个属性,或使用逻辑运算符 OR 添加更多属性。

  3. 如需对触发器进行排序,请点击任意受支持的列标题旁边的 排序

gcloud

运行以下命令可列出触发器:

gcloud eventarc triggers list --location=-

此命令会列出所有位置的触发器,并包含名称、类型、目标位置和状态等详细信息。

后续步骤