管理觸發條件

Eventarc 觸發條件可讓您將事件從事件提供者轉送至目標目的地。查看、更新及刪除觸發條件,有助於控管事件傳遞作業,並維護事件導向架構。您可以使用 Google Cloud 控制台、終端機或 Cloud Shell 中的 Google Cloud CLI,或 Eventarc API 執行這些工作。

列出觸發條件

您可以列出、篩選及排序所有位置的觸發條件。

控制台

  1. 在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。

    前往「Triggers」(觸發條件)

    這會列出專案中所有位置的所有觸發條件,並提供觸發條件名稱、區域、事件供應商、目的地和事件類型等詳細資料。

  2. 如要依特定屬性篩選觸發條件,請按照下列步驟操作:

    1. 按一下 「Filter」(篩選器) 方塊。
    2. 從「Properties」(屬性) 清單中,選取要用來篩選觸發條件的選項,例如「Name」(名稱) 或「Event channel」(事件管道)。

    您可以選取單一屬性,或使用邏輯運算子 OR 新增更多篩選屬性。

  3. 如要排序觸發條件,請按一下所需欄標題旁的「排序」圖示 。

    只有部分資料欄可以排序,例如「Name」(名稱)、「Region」(區域) 或「Event channel」(事件管道)。

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
  ]
}

描述觸發條件

您可以描述特定位置的觸發條件。

控制台

  1. 在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。

    前往「Triggers」(觸發條件)

  2. 在觸發條件清單中,按一下要瞭解詳情的觸發條件。

「Trigger details」(觸發條件詳細資料) 頁面會顯示觸發條件的詳細資料,例如名稱、區域、事件供應商、事件類型、事件資料內容類型和目的地。

如果事件目的地是 Cloud Run,系統會指出是否啟用重試政策。

gcloud

gcloud eventarc triggers describe TRIGGER \
    --location=LOCATION

更改下列內容:

  • TRIGGER:觸發條件 ID 或完整 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 目的地的觸發條件。視目的地而定,您可以更新特定欄位。

控制台

  1. 在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。

    前往「Triggers」(觸發條件)

  2. 在觸發條件清單中,按一下要瞭解詳細資料的觸發條件。

  3. 在「Trigger details」(觸發條件詳細資料) 頁面中,按一下 「Edit」(編輯)。

  4. 視需要編輯欄位,然後按一下「儲存」。

    請注意,您無法更新任何無法使用的欄位,例如「Event provider」(事件供應商) 和「Event destination」(事件目的地)。如要進一步瞭解欄位,請參閱控制台操作說明,瞭解特定供應商、事件類型和目的地。

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" \
    --max-retry-attempts=1

更改下列內容:

  • TRIGGER:觸發條件 ID 或完整 ID。
  • LOCATION:Eventarc 觸發條件的位置。

您可以更新下列任一項目:

  • NEW_EVENT_FILTERS:用於設定觸發條件事件轉送的篩選器,例如可將 methodName=storage.objects.create 更新為 methodName=storage.objects.delete。請注意,觸發條件建立後,type 事件篩選器就無法變更。如要使用其他事件類型,則必須建立新的觸發條件。
  • NEW_SERVICE_ACCOUNT:與觸發條件相關聯的身分與存取權管理 (IAM) 服務帳戶電子郵件。
  • NEW_REGION:目的地 Cloud Run 服務所在的區域。
  • NEW_SERVICE:接收觸發條件事件的 Cloud Run 服務名稱。
  • NEW_PATH:目的地 Cloud Run 服務的相對路徑,觸發條件的事件應傳送至該路徑。
  • NEW_EVENT_DATA_TYPE:事件酬載的編碼;視事件供應商而定,這可能是 application/json 或 application/protobuf。
  • 您也可以選擇使用 --max-retry-attempts 旗標,指定事件訊息只傳送一次,不重試。唯一有效的值是 1。這個旗標僅適用於 Cloud Run 目的地 (包括 Cloud Run functions)。如要清除設定,請使用 --clear-max-retry-attempts 旗標。詳情請參閱「重試事件」。

舉例來說,如要更新觸發條件的服務帳戶,請按照下列步驟操作:

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 或完整 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 或完整 ID。
  • LOCATION:Eventarc 觸發條件的位置。

您可以更新下列任一項目:

  • NEW_EVENT_FILTERS:用於設定觸發條件事件轉送的篩選器,例如 methodName=storage.objects.create 可更新為 methodName=storage.objects.delete。請注意,觸發條件建立後,type 事件篩選器就無法變更。如要使用其他事件類型,則必須建立新的觸發條件。
  • NEW_SERVICE_ACCOUNT:與觸發條件相關聯的身分與存取權管理 (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:選用。與觸發條件相關聯的身分與存取權管理 (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 稽核記錄觸發條件的方法類型。例如:

    {"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。
  • RETRY_POLICY:選用。事件傳送嘗試次數上限。有效值為 1,表示只會嘗試傳送一次,不會重試,且僅適用於 Cloud Run 目的地 (包括 Cloud Run functions)。例如:

    {"retryPolicy": {"maxAttempts": 1}}

    詳情請參閱「重試事件」。
  • UPDATE_FIELDS:選用。以半形逗號分隔的待更新欄位清單。如未提供,系統會更新要求中提供的所有欄位。例如:serviceAccount,destination

JSON 要求內文:

{
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "destination": DESTINATION,
  "eventFilters": EVENT_FILTER,
  "eventDataContentType": "CONTENT_TYPE",
  "retryPolicy": RETRY_POLICY
}

請展開以下其中一個選項,以傳送要求:

如果成功,回應主體會包含新建立的 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,代表作業仍在執行中。

刪除觸發條件

您可以刪除觸發條件。

控制台

  1. 在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。

    前往「Triggers」(觸發條件)

  2. 選取觸發條件,然後按一下「 刪除」。

gcloud

gcloud eventarc triggers delete TRIGGER

將 TRIGGER 替換為觸發條件 ID 或完整 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,代表作業仍在執行中。

後續步驟