Eventarc 觸發條件會宣告您對特定事件或一組事件感興趣。您可以為觸發程序指定篩選器 (包括事件來源) 和目標 Cloud Run 服務,藉此設定事件轉送。
Eventarc 會透過 HTTP 要求,以 CloudEvents 格式將事件傳送至事件接收器。
請參閱下列操作說明,瞭解如何設定事件轉送,將直接Cloud Speech-to-Text 事件觸發的事件轉送至 Cloud Run 服務。詳情請參閱「支援的直接事件」清單。
準備建立觸發條件
建立觸發條件前,請先完成下列必要條件:
控制台
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
啟用 Cloud Logging、Eventarc 和 Eventarc Publishing API。
如有需要,請啟用與直接事件相關的 API。舉例來說,如要使用 Cloud Speech-to-Text 活動,請啟用Cloud Speech-to-Text API。
如果沒有,請建立使用者管理的服務帳戶,然後授予必要角色和權限,讓 Eventarc 管理目標服務的事件。
前往 Google Cloud 控制台的「建立服務帳戶」頁面。
選取專案。
在「Service account name」(服務帳戶名稱) 欄位中輸入名稱。 Google Cloud 控制台會根據這個名稱填入「Service account ID」(服務帳戶 ID) 欄位。
在「Service account description」(服務帳戶說明) 欄位中輸入說明。例如:
Service account for event trigger。點按「Create and continue」(建立並繼續)。
如要提供適當的存取權,請在「Select a role」(選取角色) 清單中,選取要授予服務帳戶的必要 Identity and Access Management (IAM) 角色,以供通過或未通過驗證的叫用。詳情請參閱「Cloud Run 目標的角色和權限」。
如要新增其他角色,請按一下 「Add another role」(新增其他角色),然後新增其他角色。
按一下「繼續」。
按一下「完成」,即可完成帳戶建立程序。
gcloud
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
啟用 Cloud Logging、Eventarc 和 Eventarc Publishing API。
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
如有需要,請啟用與直接事件相關的 API。舉例來說,如果是 Cloud Speech-to-Text 事件,請啟用
speech.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 或 Google Cloud 控制台建立 Eventarc 觸發條件。
控制台
- 在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。
- 按一下「建立觸發條件」。
- 輸入觸發條件名稱。
這是觸發條件的 ID,開頭必須是英文字母。最多可包含 63 個小寫英文字母、數字或連字號。
- 在「觸發條件類型」部分,選取「Google 來源」。
- 在「Event provider」(事件提供者) 清單中,選取「Cloud Speech-to-Text」。
請注意,相關Google Cloud 文件中使用的事件供應商名稱可能沒有 Cloud 或 Google Cloud 前置字元。舉例來說,在控制台上,「Memorystore for Redis」稱為「Memorystore for Redis」Google Cloud 。
- 在「Event type」(事件類型) 清單中,從「Direct」(直接) 事件選取事件類型。
- 如要指定事件酬載的編碼,請在「Event data content type」(事件資料內容類型) 清單中,選取「application/json」或「application/protobuf」。
請注意,以 JSON 格式設定的事件酬載,會比以 Protobuf 格式設定的酬載大。視事件目的地和事件大小限制而定,這可能會影響可靠性。詳情請參閱「已知問題」。
- 在「Region」(區域) 清單中選取「global (Global)」(全域 (全域))。
詳情請參閱「Eventarc 區域」。
- 如果適用於活動供應商,請按一下「新增篩選器」,然後指定下列項目:
- 選取要叫用服務或工作流程的服務帳戶。
您也可以建立新的服務帳戶。
這會指定與觸發程序相關聯的 Identity and Access Management (IAM) 服務帳戶電子郵件,以及您先前授予 Eventarc 所需特定角色的帳戶。
- 在「Event destination」(事件目的地) 清單中,選取「Cloud Run」。
- 選取服務。
這是接收觸發條件事件的服務名稱。 服務必須與觸發程序位於同一專案,且每當產生事件時,都會收到以 HTTP POST 要求形式傳送至根網址路徑 (
/) 的事件。 - 您可以選擇指定服務網址路徑,將連入的要求傳送至該路徑。
這是目的地服務上的相對路徑,觸發條件的事件應傳送至該路徑。例如:
/、/route、route、route/subroute。 - 如要指定單次傳送嘗試,且不重試,請取消勾選「Enable retry on failure」(失敗時啟用重試) 核取方塊;否則,如果傳送嘗試失敗,系統會預設重試。詳情請參閱「重試事件」。
- 如要新增標籤,請按一下 「新增標籤」。標籤是鍵/值組合,可協助您整理資源。Google Cloud 詳情請參閱「什麼是標籤?」
- 點選「建立」。
觸發條件建立後,就無法修改事件來源篩選器。 請改為建立新觸發條件並刪除舊觸發條件。詳情請參閱「管理觸發條件」。
gcloud
您可以執行 gcloud eventarc triggers create,並搭配必要和選用旗標,建立觸發條件。
gcloud eventarc triggers create TRIGGER \ --location=global \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --event-filters="COLLECTION_ID=RESOURCE_ID" \ --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --max-retry-attempts=1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
更改下列內容:
TRIGGER:觸發條件的 ID 或完整 ID。--location旗標必須為global。詳情請參閱「Eventarc 位置」。-
DESTINATION_RUN_SERVICE:接收觸發事件的 Cloud Run 服務名稱。服務可以位於 Cloud Run 支援的任何位置,不一定要與觸發條件位於相同位置。不過,服務必須與觸發程序位於同一專案,且每當產生事件時,都會收到以 HTTP POST 要求形式傳送至根網址路徑 (/) 的事件。 -
DESTINATION_RUN_REGION:(選用) 目的地 Cloud Run 服務所在的Cloud Run 位置。如未指定,系統會假設服務與觸發程序位於相同區域。 EVENT_FILTER_TYPE:事件的 ID。 方法的 API 呼叫成功時,系統會產生事件。 如果是長時間執行的作業,系統只會在作業結束時產生事件,且僅限動作順利完成的情況。如需支援的事件類型清單,請參閱「Eventarc 支援的 Google 事件類型」。
COLLECTION_ID(選用):可做為事件篩選器的資源元件,可以是下列任一項目:customclassphraseset
RESOURCE_ID:用做相關聯集合篩選值的資源 ID。詳情請參閱「資源 ID」。PATH_PATTERN:篩選資源時要套用的路徑模式。-
EVENT_DATA_CONTENT_TYPE:(選用) 事件酬載的編碼。可以是application/json或application/protobuf。預設編碼為application/json。請注意,以 JSON 格式設定的事件酬載,會比以 Protobuf 格式設定的酬載大。視事件目的地和事件大小限制而定,這可能會影響可靠性。詳情請參閱「已知問題」。
SERVICE_ACCOUNT_NAME:使用者管理的服務帳戶名稱。PROJECT_ID:您的 Google Cloud 專案 ID。
注意:
- 必須提供
--event-filters="type=EVENT_FILTER_TYPE"旗標。如未設定其他事件篩選器,系統會比對所有資源的事件。 EVENT_FILTER_TYPE建立後即無法變更。如要變更EVENT_FILTER_TYPE,請建立新的觸發條件並刪除舊的觸發條件。- 每個觸發條件可以有多個事件篩選器,以半形逗號分隔,放在一個
--event-filters=[ATTRIBUTE=VALUE,...] 標記中,也可以重複使用標記來新增更多篩選器。只有符合所有篩選條件的事件會傳送至目的地。不支援萬用字元和規則運算式,但使用--event-filters-path-pattern旗標時,可以定義資源路徑模式。 - 如要指定單一事件傳送嘗試,且不重試,請使用
--max-retry-attempts旗標。唯一有效的值是1。如果省略旗標,系統會套用標準重試行為。詳情請參閱「重試事件」。 --service-account旗標用於指定與觸發程序相關聯的 Identity and Access Management (IAM) 服務帳戶電子郵件地址。- 如要指定目的地 Cloud Run 服務的相對路徑,以便將觸發事件傳送至該服務,請使用
--destination-run-path標記 (選用)。
範例:
gcloud eventarc triggers create helloworld-trigger \
--location=global \
--destination-run-service=helloworld-events \
--destination-run-region=us-central1 \
--event-filters="type=google.cloud.speech.phraseSet.v1.created" \
--event-filters-path-pattern="phraseset=my-phraseset-*" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com這項指令會為標示為 google.cloud.speech.phraseSet.v1.created 的事件建立名為 helloworld-trigger 的觸發條件,並比對以 my-phraseset- 開頭的 phraseset ID 事件。
Terraform
您可以使用 Terraform 為 Cloud Run 目的地建立觸發條件。詳情請參閱「使用 Terraform 建立觸發條件」。
列出觸發條件
您可以使用 Google Cloud CLI 或 Google Cloud 控制台列出 Eventarc 觸發程序,確認觸發程序是否已建立。
控制台
在 Google Cloud 控制台中,前往 Eventarc 的「Triggers」(觸發條件) 頁面。
這個頁面會列出所有位置的觸發條件,並包含名稱、區域、事件供應商和目的地等詳細資料。
如要篩選觸發條件,請按照下列步驟操作:
- 按一下「篩選器」或「篩選器觸發條件」欄位。
- 在「Properties」(屬性) 清單中,選取要用來篩選觸發條件的選項。
您可以選取單一屬性,或使用邏輯運算子
OR新增更多屬性。如要排序觸發條件,請點選任何支援的欄標題旁邊的「排序」。
gcloud
執行下列指令,列出觸發條件:
gcloud eventarc triggers list --location=-
這個指令會列出所有位置的觸發程序,並包含名稱、類型、目的地和狀態等詳細資料。