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