您可以使用 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
,则表示操作仍在进行中。