您可以使用 Google Cloud 控制台或者终端或 Cloud Shell 中的 Google Cloud CLI 来管理触发器。您还可以通过 Eventarc API 管理触发器。
列出触发器
您可以列出所有位置的触发器,并进行过滤和排序。
控制台
- 在 Google Cloud 控制台中,前往 Eventarc 触发器页面。 - 这将列出项目中所有位置的触发器,包括触发器名称、区域、事件提供方、目标位置和事件类型等详细信息。 
- 如需按特定属性过滤触发器,请执行以下操作: - 点击 过滤条件框。
- 从属性列表中,选择一个选项以过滤触发器,例如名称或事件渠道。
 - 您可以选择单个属性,或使用逻辑运算符 - OR添加更多属性以进行过滤。
- 如需对触发器进行排序,请点击相应列标题旁边的 排序。 - 只有部分列可以排序,例如名称、区域或事件渠道。 
gcloud
gcloud eventarc triggers list --location=-
此命令列出所有位置的触发器名称、类型、目标位置和状态。
REST
如需列出指定项目和位置中的触发器,请使用 projects.locations.triggers.list 方法。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud项目 ID。
- LOCATION:创建触发器的区域,例如- us-central1。
如需发送您的请求,请展开以下选项之一:
  如果成功,则响应正文包含 Trigger 的实例,并且响应应类似如下内容:
{
  "triggers": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
      "uid": "d700773a-698b-47b2-a712-2ee10b690062",
      "createTime": "2022-12-06T22:44:04.744001514Z",
      "updateTime": "2022-12-06T22:44:09.116459550Z",
      "eventFilters": [
        {
          "attribute": "type",
          "value": "google.cloud.pubsub.topic.v1.messagePublished"
        }
      ],
      "serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
      "destination": {
        "workflow": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME"
      },
      "transport": {
        "pubsub": {
          "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
          "subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
        }
      }
    },
    {
      object (Trigger)
    }
  ],
  "nextPageToken": string,
  "unreachable": [
    string
  ]
}
描述触发器
您可以描述特定位置中的触发器。
控制台
- 在 Google Cloud 控制台中,前往 Eventarc 触发器页面。 
- 在触发器列表中,点击要详细了解的触发器。 
触发器详情页面会显示触发器的详细信息,例如名称、区域、事件提供方、事件类型、事件数据内容类型和目标位置。
gcloud
gcloud eventarc triggers describe TRIGGER \ --location=LOCATION
替换以下内容:
- TRIGGER:触发器的 ID 或完全限定标识符。
- LOCATION:Eventarc 触发器的位置。
此命令会返回如下所示的触发器相关信息:
  createTime: '2023-03-16T13:40:44.889670204Z'
  destination:
    cloudRun:
      path: /
      region: us-central1
      service: hello
  eventDataContentType: application/protobuf
  eventFilters:
  - attribute: serviceName
    value: cloudscheduler.googleapis.com
  - attribute: methodName
    value: google.cloud.scheduler.v1.CloudScheduler.DeleteJob
  - attribute: type
    value: google.cloud.audit.log.v1.written
  name: projects/project-name/locations/us-central1/triggers/name-of-trigger
  serviceAccount: project-number-compute@developer.gserviceaccount.com
  transport:
    pubsub:
      subscription: projects/project-name/subscriptions/eventarc-us-central1-name-of-trigger-sub-034
      topic: projects/project-name/topics/eventarc-us-central1-name-of-trigger-931
REST
如需描述指定项目和位置中的触发器,请使用 projects.locations.triggers.get 方法。
在使用任何请求数据之前,请先进行以下替换:
- TRIGGER_NAME:您要描述的触发器的名称。
- PROJECT_ID:您的 Google Cloud项目 ID。
- LOCATION:创建触发器的区域,例如- us-central1。
如需发送您的请求,请展开以下选项之一:
  如果成功,响应正文将包含一个 Trigger 实例,如下所示:
{
  "name": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
  "uid": "d700773a-698b-47b2-a712-2ee10b690062",
  "createTime": "2022-12-06T22:44:04.744001514Z",
  "updateTime": "2022-12-06T22:44:09.116459550Z",
  "eventFilters": [
    {
      "attribute": "type",
      "value": "google.cloud.pubsub.topic.v1.messagePublished"
    }
  ],
  "serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
  "destination": {
    "workflow": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME"
  },
  "transport": {
    "pubsub": {
      "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
      "subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
    }
  }
}
如果触发器的条件指示 Pub/Sub 主题存在问题,请参阅触发器未传送事件。
更新触发器
您可以更新 Cloud Run、Google Kubernetes Engine (GKE) 和 Workflows 目标的触发器。 您可以根据目标位置更新特定字段。
控制台
- 在 Google Cloud 控制台中,前往 Eventarc 触发器页面。 
- 在触发器列表中,点击要详细了解的触发器。 
- 在触发器详情页面上,点击 修改。 
- 根据需要修改字段,然后点击保存。 - 请注意,您无法更新任何不可用的字段,例如事件提供方和事件目标位置。如需详细了解这些字段,请参阅特定提供方、事件类型和目标位置的控制台说明。 
gcloud
Cloud Run
gcloud eventarc triggers update TRIGGER \ --location=LOCATION \ --event-filters=NEW_EVENT_FILTERS \ --service-account=NEW_SERVICE_ACCOUNT \ --destination-run-region=NEW_REGION \ --destination-run-service=NEW_SERVICE \ --destination-run-path=NEW_PATH \ --event-data-content-type="NEW_EVENT_DATA_TYPE"
替换以下内容:
- TRIGGER:触发器的 ID 或完全限定标识符。
- LOCATION:Eventarc 触发器的位置。
您可以更新以下任意一项:
- NEW_EVENT_FILTERS:用于配置触发器的事件路由的过滤条件;例如,- methodName=storage.objects.create可以更新为- methodName=storage.objects.delete。请注意,触发器创建后,- type事件过滤条件便无法更改。对于其他事件类型,您必须创建新的触发器。
- NEW_SERVICE_ACCOUNT:与触发器关联的 Identity and Access Management (IAM) 服务账号电子邮件地址。
- NEW_REGION:目标 Cloud Run 服务所在的区域。
- NEW_SERVICE:为触发器接收事件的 Cloud Run 服务的名称。
- NEW_PATH:应向其发送触发器事件的目标 Cloud Run 服务的相对路径。
- NEW_EVENT_DATA_TYPE:事件载荷的编码;根据事件提供方,这可能是- application/json或- application/protobuf。
例如,如需更新触发器的服务账号,请运行以下命令:
gcloud eventarc triggers update my-cloud-run-trigger \
    --service-account=new-serviceaccount@${PROJECT_ID}.iam.gserviceaccount.com
此命令会将名为 my-cloud-run-trigger 的触发器的服务账号更新为 new-serviceaccount@PROJECT_ID.iam.gserviceaccount.com。
GKE
请注意,本部分也适用于在 GKE 集群中运行的专用服务和公共服务的公共端点。
gcloud eventarc triggers update TRIGGER \ --location=LOCATION \ --destination-gke-namespace=NEW_NAMESPACE \ --destination-gke-service=NEW_SERVICE \ --destination-gke-path=NEW_PATH \ --event-data-content-type="NEW_EVENT_DATA_TYPE"
替换以下内容:
- TRIGGER:触发器的 ID 或完全限定标识符。
- LOCATION:Eventarc 触发器的位置。
您可以更新以下任意一项:
- NEW_NAMESPACE:目标 GKE 服务在其中运行的命名空间。
- NEW_SERVICE:接收触发器的事件的 GKE 服务名称。
- NEW_PATH:触发器的事件应该发送到的目标 GKE 服务的相对路径。
- NEW_EVENT_DATA_TYPE:事件载荷的编码;根据事件提供方,这可能是- application/json或- application/protobuf。
例如,如需更新触发器的事件接收器服务,请运行以下命令:
gcloud eventarc triggers update my-gke-trigger \
    --destination-gke-service=helloworld-events
此命令会将名为 my-gke-trigger 的触发器的事件接收器服务更新为名为 helloworld-events 的 GKE 服务。
Workflows
gcloud eventarc triggers update TRIGGER \ --location=LOCATION \ --event-filters=NEW_EVENT_FILTERS \ --service-account=NEW_SERVICE_ACCOUNT \ --destination-workflow=NEW_DESTINATION_WORKFLOW \ --destination-workflow-location=NEW_DESTINATION_WORKFLOW_LOCATION \ --event-data-content-type="NEW_EVENT_DATA_TYPE"
替换以下内容:
- TRIGGER:触发器的 ID 或完全限定标识符。
- LOCATION:Eventarc 触发器的位置。
您可以更新以下任意一项:
- NEW_EVENT_FILTERS:用于配置触发器的事件路由的过滤条件;例如,- methodName=storage.objects.create可以更新为- methodName=storage.objects.delete。请注意,触发器创建后,- type事件过滤条件便无法更改。对于其他事件类型,您必须创建新的触发器。
- NEW_SERVICE_ACCOUNT:与触发器关联的 Identity and Access Management (IAM) 服务账号电子邮件地址。
- NEW_DESTINATION_WORKFLOW:从触发器接收事件的已部署工作流的 ID。
- NEW_DESTINATION_WORKFLOW_LOCATION:目标工作流的部署位置。
- NEW_EVENT_DATA_TYPE:事件载荷的编码;根据事件提供方,这可能是- application/json或- application/protobuf。
例如,如需更新触发器的服务账号,请运行以下命令:
gcloud eventarc triggers update my-workflows-trigger \
    --service-account=new-serviceaccount@${PROJECT_ID}.iam.gserviceaccount.com
此命令会将名为 my-workflows-trigger 的触发器的服务账号更新为 new-serviceaccount@PROJECT_ID.iam.gserviceaccount.com。
REST
如需更新现有触发器,请使用 projects.locations.triggers.patch 方法,并视情况使用 updateMask 查询参数指定要更新的字段列表。
在使用任何请求数据之前,请先进行以下替换:
- TRIGGER_NAME:您要更新的触发器的名称。
- PROJECT_ID:您的 Google Cloud项目 ID。
- LOCATION:创建触发器的区域,例如- us-central1。
- SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com:可选。与触发器关联的 Identity and Access Management (IAM) 服务账号电子邮件地址。
- DESTINATION:可选。指定事件应发送到的目标位置,并包含- Destination的实例。例如:- {"destination": {"workflow": "projects/my-project/locations/us-central1/workflows/my-first-workflow"}}- 或 - {"destination": {"cloudRun": {"service": "hello-world", "region": "us-central1"}}}
- EVENT_FILTER:可选。要过滤的事件属性。仅支持更新 Cloud Audit Logs 触发器的方法类型。例如:- {"eventFilters": [{"attribute": "methodName", "value": "storage.buckets.create"}, {"attribute": "type", "value": "google.cloud.audit.log.v1.written"}, {"attribute": "serviceName", "value": "storage.googleapis.com"}]}- 请注意,您无法更新 GKE 目标的方法类型。 
- CONTENT_TYPE:可选。事件载荷的编码;根据事件提供方,这可能是- application/json或- application/protobuf。
- UPDATE_FIELDS:可选。要更新的字段的逗号分隔列表。如果未提供,则请求中提供的所有字段都会更新。例如- serviceAccount,destination
请求 JSON 正文:
{
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "destination": DESTINATION,
  "eventFilters" EVENT_FILTER,
  "eventDataContentType": "CONTENT_TYPE"
}
如需发送您的请求,请展开以下选项之一:
  如果成功,响应正文将包含一个新创建的 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/triggers/TRIGGER_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}
如果 "done" 的值为 false,则表示操作仍在进行中。
删除触发器
您可以删除触发器。
控制台
- 在 Google Cloud 控制台中,前往 Eventarc 触发器页面。 
- 选择触发器,然后点击 删除。 
gcloud
gcloud eventarc triggers delete TRIGGER
将 TRIGGER 替换为触发器的 ID 或完全限定的标识符。
REST
如需删除具有指定名称的触发器,请使用 projects.locations.triggers.delete 方法。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud项目 ID。
- LOCATION:创建触发器的区域,例如- us-central1。
- TRIGGER_NAME:要删除的触发器的名称。
如需发送您的请求,请展开以下选项之一:
  如果成功,则响应正文包含一个 Operation 实例:
{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-24T17:53:52.834876290Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}
如果 "done" 的值为 false,则表示操作仍在进行中。