GSP773

總覽
在本實驗室,您將瞭解如何使用 Cloud Run 事件,管理生產者和消費者之間的通訊。生產者 (即事件來源) 會產生原始資料,並傳送給使用這些傳遞資訊的消費者 (即事件接收器)。下圖是這項機制在 Google Cloud 運作的大致流程:

Eventarc 是 Cloud Run 服務中,用來在生產者和消費者之間傳遞事件的統一機制。在上圖的範例中,Cloud Pub/Sub 負責傳遞專案產生的事件。
完成本實驗室後,您將能夠將各種來源的事件傳送到 Google Cloud 接收器和自訂接收器。
課程內容:
- 瞭解 Eventarc for Cloud Run
- 建立 Cloud Run 接收器
- 為 Cloud Pub/Sub 建立事件觸發條件
- 為稽核記錄建立事件觸發條件
事前準備
根據實驗室內容,建議您先熟悉以下服務/概念:
- Cloud Run
- Cloud Pub/Sub
- Logging
建議在無痕模式瀏覽器視窗中執行這個實驗室。
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
工作 1:設定環境
- 設定專案:
gcloud config set project {{{project_0.project_id | "PROJECT_ID"}}}
- 將 Cloud Run 區域設為支援的區域:
gcloud config set run/region {{{project_0.default_region | "REGION"}}}
- 將 Cloud Run 平台預設為
managed:
gcloud config set run/platform managed
- 為 Cloud Run 設定 Eventarc 預設位置:
gcloud config set eventarc/location {{{project_0.default_region | "REGION"}}}
工作 2:啟用服務帳戶
接著,設定稽核記錄觸發條件所需的服務帳戶。
- 將專案編號儲存至環境變數:
export PROJECT_NUMBER="$(gcloud projects list \
--filter=$(gcloud config get-value project) \
--format='value(PROJECT_NUMBER)')"
- 將
eventarc.admin 角色授予預設的 Compute Engine 服務帳戶:
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
--role='roles/eventarc.admin'
點選「Check my progress」,確認上述工作已完成。
啟用服務帳戶。
工作 3:探索事件
您可以使用指令列,找出已註冊的來源和事件類型。
- 如要查看不同類型事件的清單,請執行下列指令:
gcloud eventarc providers list
輸出內容:
NAME: datamigration.googleapis.com
LOCATION: us-central1
NAME: apigeeregistry.googleapis.com
LOCATION: us-central1
NAME: networkconnectivity.googleapis.com
LOCATION: us-central1
NAME: dataplex.googleapis.com
LOCATION: us-central1
NAME: datafusion.googleapis.com
LOCATION: us-central1
NAME: pubsub.googleapis.com
LOCATION: us-central1
- 如要進一步瞭解每個事件,請執行下列指令:
gcloud eventarc providers describe \
pubsub.googleapis.com
輸出內容:
displayName: Cloud Pub/Sub
eventTypes:
- description: A message is published to the specified Pub/Sub topic.
filteringAttributes:
- attribute: type
required: true
type: google.cloud.pubsub.topic.v1.messagePublished
name: projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com
工作 4:建立 Cloud Run 接收器
- 為服務設定環境變數:
export SERVICE_NAME=event-display
- 為映像檔設定環境變數:
export IMAGE_NAME="gcr.io/cloudrun/hello"
- 將容器化應用程式部署至 Cloud Run:
gcloud run deploy ${SERVICE_NAME} \
--image ${IMAGE_NAME} \
--allow-unauthenticated \
--max-instances=3
成功部署後,指令列會顯示服務網址,代表服務已啟動並開始運作。
在任一瀏覽器視窗開啟服務網址,即可查看已部署的容器。
點選「Check my progress」,確認上述工作已完成。
建立 Cloud Run 接收器。
工作 5:建立 Cloud Pub/Sub 事件觸發條件
接收事件的方式之一是透過 Cloud Pub/Sub。自訂應用程式可將訊息發布至 Cloud Pub/Sub,而這些訊息可透過 Eventarc for Cloud Run 傳送至 Google Cloud Run 接收器。
建立觸發條件
- 首先,您需要取得建構 Cloud Pub/Sub 事件觸發條件所需的參數詳細資料:
gcloud eventarc providers describe \
pubsub.googleapis.com
- 建立觸發條件,將發布到 Cloud Pub/Sub 主題的事件篩選至已部署的 Cloud Run 服務:
gcloud eventarc triggers create trigger-pubsub \
--destination-run-service=${SERVICE_NAME} \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
尋找主題
- Pub/Sub 觸發條件會在背景建立 Pub/Sub 主題。找出該主題值並指派給環境變數:
- 匯出主題 ID
export TOPIC_ID=$(gcloud eventarc triggers describe trigger-pubsub \
--format='value(transport.pubsub.topic)')
- 確認主題 ID 可用
echo ${TOPIC_ID}
輸出內容:
projects/{{{project_0.project_id | "PROJECT_ID"}}}/locations/{{{project_0.default_region | "REGION"}}}/providers/pubsub.googleapis.com
測試觸發條件
- 您可以列出所有觸發條件,確認是否已建立:
gcloud eventarc triggers list
輸出內容:
NAME: trigger-pubsub
TYPE: google.cloud.pubsub.topic.v1.messagePublished
DESTINATION: Cloud Run service: event-display
ACTIVE: Yes
LOCATION: {{{project_0.default_region | "REGION"}}}
注意:觸發條件建立後,可能需要 5 分鐘才會生效並開始篩選事件。
- 您可以使用以下
gcloud 指令觸發事件,模擬自訂應用程式傳送訊息的情境:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
-
依序前往「導覽選單」 >「無伺服器」 >「Cloud Run」,然後按一下「event-display」。
-
點按「記錄」。
您建立的 Cloud Run 接收器會記錄傳入訊息的內容。您可以前往 Cloud Run 執行個體的「記錄」專區查看:

點選「Check my progress」,確認上述工作已完成。
建立 Cloud Pub/Sub 事件觸發條件。
刪除觸發條件
-
測試完畢後,即可刪除觸發條件:
gcloud eventarc triggers delete trigger-pubsub
工作 6:建立稽核記錄事件觸發條件
接著設定觸發條件來監聽稽核記錄事件。您將在稽核記錄中監聽 Cloud Storage 事件。
建立 bucket
- 為 bucket 建立環境變數:
export BUCKET_NAME=$(gcloud config get-value project)-cr-bucket
- 在已部署 Cloud Run 服務的相同區域建立 Cloud Storage bucket:
gsutil mb -p $(gcloud config get-value project) \
-l $(gcloud config get-value run/region) \
gs://${BUCKET_NAME}/
點選「Check my progress」,確認上述工作已完成。
建立值區。
啟用稽核記錄
為接收來自服務的事件,您必須啟用稽核記錄。
-
依序選取「導覽選單」 >「IAM 與管理」 >「稽核記錄」。
-
在服務清單中,勾選 Google Cloud Storage 旁的方塊。
-
點按右側的「稽核類型」分頁標籤。系統會預設選取「管理員寫入」,請務必同時選取「管理員讀取」、「資料讀取」和「資料寫入」,然後點按「儲存」。
測試稽核記錄
現在,您需要找出設定實際觸發條件所需的參數,並執行實際作業。
- 執行下列指令,建立名為
random.txt 的文字檔案:
echo "Hello World" > random.txt
- 將
random.txt 檔案上傳至 bucket:
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
接著查看這項更新產生的稽核記錄。
-
在 Cloud 控制台,依序前往「導覽選單」 >「記錄」 >「Logs Explorer」。
-
在「資源」下方,依序選取「GCS Bucket」>「[Bucket Name]」>「位置」> 選擇 bucket 及其位置,按一下「套用」。

注意:稽核記錄會延遲一段時間,才會顯示在記錄檢視器使用者介面。如果資源清單中沒有顯示「GCS Bucket」,請稍待片刻再試一次。
- 點按「執行查詢」。
執行查詢後,您會看到儲存空間 bucket 的記錄,其中一筆應為 storage.buckets.create。
- 請記下
serviceName、methodName 和 resourceName 這幾個參數,稍後建立觸發條件時會用到。
建立觸發條件
現在所有前置作業都已就緒,可以為稽核記錄建立事件觸發條件了。
- 取得建構觸發條件所需的參數詳細資料:
gcloud eventarc providers describe cloudaudit.googleapis.com
- 建立觸發條件並指定正確的篩選條件:
gcloud eventarc triggers create trigger-auditlog \
--destination-run-service=${SERVICE_NAME} \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=storage.googleapis.com" \
--event-filters="methodName=storage.objects.create" \
--service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
注意:resourceName 參數
- 另有選填的 resourceName 欄位。提供完整的資源路徑 (例如:projects/_/buckets/test123),即可篩選出與特定資源相關的事件。如未提供任何資源路徑,系統就會篩選出與提供的 serviceName 和 methodName 對應的所有資源事件。請勿只提供部分資源名稱 (例如:projects/project-id),否則會發生錯誤。
- 如果 methodsNames 屬於「create」(建立) 類型 (例如:用於建立 Cloud Storage bucket 的 storage.buckets.create),則 resourceNames 最好留白,因為部分 serviceNames 的 resourceName 會動態產生,無法事先得知。
- 如果 methodNames 為「read」(讀取)、「update」(更新) 或「delete」(刪除) 類型 (例如:用於更新特定 Cloud Storage bucket 的storage.buckets.update),則可指定完整的資源路徑。
測試觸發條件
- 列出所有觸發條件,確認已成功建立:
gcloud eventarc triggers list
輸出內容:
NAME: trigger-auditlog
TYPE: google.cloud.audit.log.v1.written
DESTINATION: Cloud Run service: event-display
ACTIVE: Yes
LOCATION: {{{project_0.default_region | "REGION"}}}
- 請等待最多 10 分鐘,觸發條件建立完成並生效後,才能開始篩選事件。
準備就緒後,觸發條件就會篩選建立事件並傳送至服務,接著就能開始觸發事件了。
- 將同一個檔案上傳至先前使用的 Cloud Storage bucket:
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
- 依序前往「導覽選單」 >「Cloud Run」,查看 Cloud Run 服務記錄,就會看到收到的事件。
點選「Check my progress」,確認上述工作已完成。
建立稽核記錄事件觸發條件。
刪除觸發條件
gcloud eventarc triggers delete trigger-auditlog
恭喜!
您已學會如何在 Google Cloud 基礎架構中,將事件傳送至 Cloud Run。在本實驗室中,您完成了下列工作:
- 瞭解 Cloud Run 事件
- 建立 Cloud Run 接收器
- 為 Cloud Pub/Sub 建立事件觸發條件
- 為稽核記錄建立事件觸發條件
瞭解詳情/後續步驟
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 5 月 2 日
實驗室上次測試日期:2025 年 5 月 2 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。