Eventarc 觸發條件會宣告您對特定事件或一組事件感興趣。您可以為觸發條件指定篩選器 (包括事件來源) 和目標 Cloud Run 服務,藉此設定事件路由。
Eventarc 會透過 HTTP 要求,以 CloudEvents 格式將事件傳送至事件接收器。
請參閱下列操作說明,瞭解如何設定事件轉送,將直接Firebase Realtime Database 事件觸發的事件轉送至 Cloud Run 服務。詳情請參閱支援的直接事件清單。
準備建立觸發條件
建立觸發條件前,請先完成下列先決條件:
主控台
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
啟用 Cloud Logging、Eventarc 和 Eventarc Publishing API。
如有需要,請啟用與直接事件相關的 API。舉例來說,如要使用 Firebase Realtime Database 活動,請啟用Firebase Realtime Database 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
如有需要,請啟用與直接事件相關的 API。舉例來說,如要啟用 Firebase Realtime Database 活動,請啟用
firebasedatabase.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 來源)。
- 在「Event provider」(事件提供者) 清單中,選取「Firebase Realtime Database」。
請注意,相關Google Cloud 文件中使用的事件提供者名稱可能沒有 Cloud 或 Google Cloud 前置字元。舉例來說,在控制台中,「Memorystore for Redis」稱為「Memorystore for Redis」Google Cloud 。
- 在「Event type」(事件類型) 清單中,從「Direct」(直接) 事件選取事件類型。
- 在「事件資料內容類型」清單中,選取事件酬載的編碼。
如果是來自 Firebase Realtime Database的直接事件,則必須為 application/json。
- 在「Region」(區域) 清單中,選取與產生事件的Google Cloud 服務相同的區域。
詳情請參閱「Eventarc 區域」。
- 在「Attribute 1」(屬性 1) 欄位中,執行個體
資源 ID 會做為事件篩選器。選取這個篩選器的運算子:
- 相等
- 路徑模式
詳情請參閱「瞭解路徑模式」。
- 在「屬性值 1」欄位中,輸入要接收事件的資料庫執行個體名稱。視您在上一步中選擇的運算子而定,屬性值應為確切名稱或路徑模式格式。
- 在 ref 屬性中,選取「路徑模式」運算子。
- 在「屬性值 2」欄位中,輸入要接收事件的資料庫執行個體路徑 (如果該路徑或任何子路徑中的資料已建立、更新或刪除)。
- 選取要叫用服務或工作流程的服務帳戶。
或者,您也可以建立新的服務帳戶。
這會指定與觸發程序相關聯的 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=EVENT_FILTER_TYPE" \ --event-filters="instance=INSTANCE" \ --event-filters-path-pattern="ref=REF" \ --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 的 Firebase 即時資料庫觸發條件僅適用於特定位置,且觸發條件必須與 Firebase 即時資料庫執行個體位於相同位置。詳情請參閱 Eventarc 所在位置和 Realtime Database 所在位置。
-
DESTINATION_RUN_SERVICE
:接收觸發事件的 Cloud Run 服務名稱。服務可以位於 Cloud Run 支援的任何位置,不一定要與觸發條件位於相同位置。不過,服務必須與觸發程序位於同一專案,且每當產生事件時,都會收到以 HTTP POST 要求形式傳送至根網址路徑 (/
) 的事件。 -
DESTINATION_RUN_REGION
:(選用) 目的地 Cloud Run 服務所在的區域。如未指定,系統會假設服務與觸發程序位於同一區域。 EVENT_FILTER_TYPE
:Firebase 即時資料庫事件的 ID,可以是下列任一值:google.firebase.database.ref.v1.created
:在資料庫中建立資料時傳送的事件google.firebase.database.ref.v1.updated
:資料庫中的資料更新時,系統會傳送事件google.firebase.database.ref.v1.deleted
:在資料庫中刪除資料時傳送的事件google.firebase.database.ref.v1.written
:在資料庫中建立、更新或刪除資料時,系統會傳送事件
INSTANCE
:單一資料庫執行個體,且運算子可以是下列其中一種:- 相等,例如
--event-filters="instance=INSTANCE"
- 路徑模式,例如
--event-filters-path-pattern="instance=INSTANCE"
。詳情請參閱「瞭解路徑模式」。
- 相等,例如
REF
:資料庫執行個體中的路徑,您希望在該路徑或任何子項中建立、更新或刪除資料時,從該路徑接收事件。SERVICE_ACCOUNT_NAME
:使用者管理的服務帳戶名稱。PROJECT_ID
:您的 Google Cloud 專案 ID。
注意:
- 如果是來自 Firebase Realtime Database的直接事件,事件酬載的編碼為
application/json
。 - 必須使用下列旗標:
--event-filters="type=EVENT_FILTER_TYPE"
--event-filters="instance=INSTANCE"
或--event-filters-path-pattern="instance=INSTANCE"
--event-filters-path-pattern="ref=REF"
- 建立觸發條件後,就無法變更事件篩選器類型。如要使用其他事件類型,請建立新的觸發條件。
--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.firebase.database.ref.v1.created" \ --event-filters="instance=test-instance" \ --event-filters-path-pattern="ref=users/*" \ --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
這個指令會為識別為 google.firebase.database.ref.v1.created
的事件,以及識別為 test-instance
的資料庫執行個體中的 users/*
路徑,建立名為 helloworld-trigger
的觸發條件。
Terraform
您可以使用 Terraform 為 Cloud Run 目的地建立觸發程序。詳情請參閱「使用 Terraform 建立觸發條件」。
列出觸發條件
如要確認是否已建立觸發程序,請使用 Google Cloud CLI 或 Google Cloud 控制台列出 Eventarc 觸發程序。
主控台
在 Google Cloud 控制台中,前往 Eventarc「Triggers」(觸發條件) 頁面。
這個頁面會列出所有位置的觸發條件,並包含名稱、區域、事件供應商、目的地等詳細資料。
如要篩選觸發條件,請按照下列步驟操作:
- 按一下「篩選器」 或「篩選器觸發條件」欄位。
- 在「屬性」清單中,選取要用來篩選觸發條件的選項。
您可以選取單一屬性,或使用邏輯運算子
OR
新增更多屬性。如要排序觸發條件,請按一下任何支援的欄標題旁的「排序」
。
gcloud
執行下列指令來列出觸發條件:
gcloud eventarc triggers list --location=-
這個指令會列出所有位置的觸發條件,並包含名稱、類型、目的地和狀態等詳細資料。