Eventarc 觸發條件會宣告您對特定事件或一組事件感興趣。您可以為觸發條件指定篩選器 (包括事件來源) 和目標 Cloud Run 服務,藉此設定事件轉送。
Eventarc 會透過 HTTP 要求,以 CloudEvents 格式將事件傳送至事件接收器。
這些操作說明會介紹如何設定轉送,將符合觸發條件篩選條件的稽核記錄檔,轉送至 Cloud Run 服務。如要查看 Eventarc 支援的稽核記錄事件清單 (包括 serviceName 和 methodName 值),請參閱「Eventarc 支援的 Google 事件類型」。
如要進一步瞭解如何擷取稽核記錄建立時觸發的事件,且該記錄符合觸發條件的篩選條件,請參閱「決定 Cloud 稽核記錄的事件篩選器」。
準備建立觸發條件
建立觸發條件前,請先完成下列必要條件:
主控台
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。 
- 啟用 Cloud Logging、Eventarc 和 Eventarc Publishing API。 
- 如適用,請啟用與 Cloud 稽核記錄事件相關的 API。 舉例來說,如要取得 Cloud Run 函式的稽核記錄,請啟用 Cloud Functions API。 
- 如果沒有,請建立使用者代管的服務帳戶,然後授予必要角色和權限,讓 Eventarc 管理目標服務的事件。 - 前往 Google Cloud 控制台的「建立服務帳戶」頁面。 
- 選取專案。 
- 在「Service account name」(服務帳戶名稱) 欄位中輸入名稱。 Google Cloud 控制台會根據這個名稱填入「服務帳戶 ID」欄位。 - 在「服務帳戶說明」欄位中輸入說明。例如: - Service account for event trigger。
- 按一下「建立並繼續」。 
- 如要提供適當的存取權,請在「Select a role」(請選擇角色) 清單中,選取要授予服務帳戶的必要 Identity and Access Management (IAM) 角色,以進行已驗證或未驗證的叫用。詳情請參閱「Cloud Run 目標的角色和權限」。 - 如要新增其他角色,請按一下「新增其他角色」,然後新增每個其他角色。 
- 按一下「繼續」。 
- 按一下「完成」,即可完成帳戶建立程序。 
 
gcloud
- In the Google Cloud console, activate Cloud Shell. - At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize. 
- 啟用 Cloud Logging、Eventarc 和 Eventarc Publishing API。 - gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com 
- 如適用,請啟用與 Cloud 稽核記錄事件相關的 API。 舉例來說,如要啟用 Cloud Run functions 稽核記錄,請啟用 - cloudfunctions.googleapis.com。
- 如果沒有,請建立使用者代管的服務帳戶,然後授予必要角色和權限,讓 Eventarc 管理目標服務的事件。 - 建立服務帳戶: - gcloud iam service-accounts create SERVICE_ACCOUNT_NAME - 將 - SERVICE_ACCOUNT_NAME替換為服務帳戶名稱。長度必須介於 6 至 30 個字元之間,可以使用小寫英數字元和破折號。建立服務帳戶後,即無法變更名稱。
- 針對已驗證或未驗證的呼叫,授予必要的 Identity and Access Management (IAM) 角色或權限。詳情請參閱Cloud Run 目標的角色和權限。 
 
建立觸發條件
您可以使用 Google Cloud CLI 建立 Eventarc 觸發條件,或透過 Google Cloud 控制台建立。
主控台
- 在 Google Cloud 控制台中,前往 Eventarc「Triggers」(觸發條件) 頁面。
- 按一下「建立觸發條件」。
- 輸入觸發條件名稱。這是觸發條件的 ID,開頭必須是英文字母。最多可包含 63 個小寫英文字母、數字或連字號。 
- 在「Trigger type」(觸發條件類型) 中,選取「Google sources」(Google 來源)。
- 選取「活動供應商」。
這是指透過稽核記錄提供事件的 Google 服務。例如選取「BigQuery」BigQuery。 請注意,相關Google Cloud 文件中使用的事件提供者名稱可能沒有 Cloud 或 Google Cloud 前置字元。舉例來說,在控制台中,「Memorystore for Redis」稱為「Memorystore for Redis」Google Cloud 。 
- 在「Event type」(事件類型) 清單中,從「via Cloud Audit Logs」(透過 Cloud 稽核記錄) 事件中選取事件類型。
- 選取下列其中一個選項:
- 任何資源:這是預設選項,包括在建立時產生 ID 的動態建立資源。
- 特定資源:您必須提供完整資源名稱。
- 路徑模式:您可以使用路徑模式篩選資源。
  例如,輸入 projects/_/buckets/eventarc-bucket/objects/random.txt或projects/_/buckets/**/r*.txt。
 
- 如要指定事件酬載的編碼,請在「事件資料內容類型」清單中,選取「application/json」或「application/protobuf」。
請注意,以 JSON 格式設定的事件酬載會比以 Protobuf 格式設定的酬載大。視事件目的地和事件大小限制而定,這可能會影響可靠性。詳情請參閱已知問題。 
- 在「Region」(區域) 清單中選取區域。
Eventarc 的 Cloud Audit Logs 觸發程序適用於特定區域和全域區域,但不適用於雙區域和多區域位置。為避免全域觸發程序導致效能和資料駐留問題,Google 建議位置應與產生事件的 Google Cloud 服務相符。詳情請參閱「Eventarc 區域」。 如果您指定全域位置,系統會從所有符合事件篩選條件的位置接收事件。舉例來說,建立全域 Eventarc 觸發條件後,您就能接收歐盟和美國多區域中資源的事件。 請注意,Cloud Audit Logs 觸發程序會針對 Compute Engine 產生已知問題,導致事件源自單一區域: us-central1。無論虛擬機器執行個體實際位於何處,建立觸發條件時,請將觸發條件位置設為us-central1或global。
- 選取要叫用服務或工作流程的服務帳戶。或者,您也可以建立新的服務帳戶。 這會指定與觸發程序相關聯的 Identity and Access Management (IAM) 服務帳戶電子郵件,您先前已授予該帳戶 Eventarc 所需的特定角色。 
- 在「Event destination」(事件目的地) 清單中,選取「Cloud Run」。
- 選取服務。
 這是接收觸發條件事件的服務名稱。 這項服務必須與觸發條件位於同一專案,且每當產生事件時,都會收到以 HTTP POST 要求傳送至根網址路徑 ( /) 的事件。
- 您也可以指定服務網址路徑,將傳入要求傳送至該路徑。這是目的地服務上的相對路徑,觸發條件的事件應傳送至該路徑。例如: /、/route、route、route/subroute。
- 如要新增標籤,請按一下 「新增標籤」。標籤是鍵/值組合,可協助您整理Google Cloud 資源。詳情請參閱「什麼是標籤?」
- 點選「建立」。
觸發條件建立後,事件來源篩選器就無法修改。 請改為建立新的觸發條件,並刪除舊的觸發條件。詳情請參閱「管理觸發條件」。
gcloud
您可以執行 gcloud eventarc triggers create 指令,並搭配必要和選用旗標,建立觸發條件。
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=SERVICE_NAME" \ --event-filters="methodName=METHOD_NAME" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
更改下列內容:
- TRIGGER:觸發條件的 ID 或完整 ID。
- LOCATION:Eventarc 觸發條件的位置。或者,您也可以設定- eventarc/location屬性,例如- gcloud config set eventarc/location us-central1。- Eventarc 的 Cloud Audit Logs 觸發程序適用於特定區域和全域區域,但不適用於雙區域和多區域位置。為避免全域觸發程序導致任何效能和資料駐留問題,Google 建議位置與產生事件的 Google Cloud 服務相符。詳情請參閱「Eventarc 區域」。 - 如果指定全域位置,系統會從所有位置接收事件,並根據事件篩選器產生相符結果。舉例來說,建立全域 Eventarc 觸發條件後,您就能從歐盟和美國多區域的資源接收事件。 - 請注意,Cloud Audit Logs 觸發程序存在已知問題,導致 Compute Engine 事件源自單一區域: - us-central1。無論虛擬機器執行個體實際位於何處,建立觸發條件時,請將觸發條件位置設為- us-central1或- global。
- 
  DESTINATION_RUN_SERVICE:接收觸發事件的 Cloud Run 服務名稱。服務可以位於 Cloud Run 支援的任何位置,不一定要與觸發條件位於相同位置。不過,這項服務必須與觸發程序位於同一專案,且每當產生事件時,都會收到以 HTTP POST 要求傳送至根網址路徑 (/) 的事件。
- 
  DESTINATION_RUN_REGION:(選用) 目的地 Cloud Run 服務所在的區域。如未指定,系統會假設服務與觸發程序位於同一區域。
- SERVICE_NAME:服務的 ID Google Cloud
- METHOD_NAME:作業的 ID
- 
  EVENT_DATA_CONTENT_TYPE:(選填) 事件酬載的編碼。 可以是application/json或application/protobuf。預設編碼為application/json。請注意,以 JSON 格式設定的事件酬載會比以 Protobuf 格式設定的酬載大。視事件目的地和事件大小限制而定,這可能會影響可靠性。詳情請參閱已知問題。 
- 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"旗標並指定資源的完整路徑,即可篩選特定資源的事件。對於在建立時產生 ID 的動態建立資源,請省略這個旗標。或者,使用- --event-filters-path-pattern="resourceName=VALUE"標記並指定資源路徑模式,篩選一組資源的事件。
- 每個觸發條件可以有多個事件篩選器,以逗號分隔,放在一個 --event-filters=[ATTRIBUTE=VALUE,...] 標記中,也可以重複標記來新增更多篩選器。只有符合所有篩選條件的事件會傳送至目的地。不支援萬用字元和規則運算式。
- 建立觸發條件後,就無法變更事件篩選器類型。如要使用其他事件類型,請建立新的觸發條件。
- --service-account旗標用於指定與觸發程序相關聯的身分與存取權管理 (IAM) 服務帳戶電子郵件。
- (選用) 使用 --destination-run-path旗標,在目的地 Cloud Run 服務上指定相對路徑,觸發條件的事件應傳送至該路徑。
範例:
  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-run-service=helloworld-events \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=bigquery.googleapis.com" \
      --event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \
      --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
這會為 bigquery.googleapis.com 寫入的稽核記錄,以及識別為 google.cloud.bigquery.v2.JobService.InsertJob 的作業,建立名為 helloworld-trigger 的觸發條件。
Terraform
您可以使用 Terraform 為 Cloud Run 目的地建立觸發程序。詳情請參閱「使用 Terraform 建立觸發條件」。
列出觸發條件
如要確認是否已建立觸發程序,請使用 Google Cloud CLI 或 Google Cloud 控制台列出 Eventarc 觸發程序。
主控台
- 在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。 - 這個頁面會列出所有位置的觸發條件,並包含名稱、區域、事件供應商、目的地等詳細資料。 
- 如要篩選觸發條件,請按照下列步驟操作: - 按一下「篩選器」或「篩選器觸發條件」欄位。
- 在「屬性」清單中,選取要用來篩選觸發條件的選項。
 - 您可以選取單一屬性,或使用邏輯運算子 - OR新增更多屬性。
- 如要排序觸發條件,請按一下任何支援的欄標題旁的「排序」。 
gcloud
執行下列指令,列出觸發條件:
gcloud eventarc triggers list --location=-
這個指令會列出所有位置的觸發條件,並包含名稱、類型、目的地和狀態等詳細資料。