使用 Pub/Sub 訊息接收事件 (gcloud CLI)
本快速入門導覽課程說明如何部署未經驗證的 Cloud Run 服務,並使用 Pub/Sub 接收事件。
在本快速入門導覽課程中,您將:
將事件接收器服務部署至 Cloud Run。
建立 Eventarc 觸發條件。
將訊息發布至 Pub/Sub 主題以產生事件,並在 Cloud Run 記錄檔中查看該事件。
事前準備
貴機構定義的安全性限制,可能會導致您無法完成下列步驟。如需疑難排解資訊,請參閱「在受限的 Google Cloud 環境中開發應用程式」。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs:
gcloud services enable run.googleapis.com
logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com -
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs:
gcloud services enable run.googleapis.com
logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com - 更新 Google Cloud CLI 元件:
gcloud components update
- 登入帳戶:
gcloud auth login
- 設定本快速入門導覽課程中使用的設定變數:
gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
-
如果您是專案建立者,系統會授予基本「擁有者」角色 (
roles/owner
)。根據預設,這個身分與存取權管理 (IAM) 角色包含完全存取大多數 Google Cloud資源所需的權限,因此您可以略過這個步驟。如果您不是專案建立者,必須在專案中將必要權限授予適當的主體。舉例來說,主體可以是 Google 帳戶 (適用於使用者) 或服務帳戶 (適用於應用程式和運算工作負載)。詳情請參閱活動目的地的「角色和權限」頁面。
所需權限
如要取得完成本快速入門所需的權限,請要求管理員為您授予專案的下列 IAM 角色:
-
Cloud Run Admin (
roles/run.admin
) -
Eventarc 管理員 (
roles/eventarc.admin
) -
記錄檔檢視存取者 (
roles/logging.viewAccessor
) -
專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin
) -
Pub/Sub Publisher (
roles/pubsub.publisher
) -
服務帳戶管理員 (
roles/iam.serviceAccountAdmin
) -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) -
服務使用情形管理員 (
roles/serviceusage.serviceUsageAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
-
Cloud Run Admin (
- 如果您是在 2021 年 4 月 8 日當天或之前啟用 Cloud Pub/Sub 服務代理,請將服務帳戶權杖建立者角色 (
roles/iam.serviceAccountTokenCreator
) 授予服務代理,以支援已驗證的 Pub/Sub 推送要求。否則,系統會預設授予這個角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
將 PROJECT_NUMBER
替換為專案編號。 Google Cloud您可以在 Google Cloud 控制台的「歡迎」頁面找到專案編號,也可以執行下列指令:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
將事件接收器部署至 Cloud Run
使用預先建構的映像檔 us-docker.pkg.dev/cloudrun/container/hello
,部署 Cloud Run 服務來接收及記錄事件:
gcloud run deploy helloworld-events-pubsub-quickstart \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--allow-unauthenticated
看到服務網址時,表示部署作業已完成。
建立 Eventarc 觸發條件
當訊息發布至 Pub/Sub 主題時,事件觸發程序會將訊息傳送至部署在 Cloud Run 上的事件接收器服務。
建立觸發條件,監聽 Pub/Sub 訊息:
新增 Pub/Sub 主題
gcloud eventarc triggers create events-pubsub-trigger \ --destination-run-service=helloworld-events-pubsub-quickstart \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
這會建立新的 Pub/Sub 主題,以及名為
events-pubsub-trigger
的觸發條件。現有 Pub/Sub 主題
gcloud eventarc triggers create events-pubsub-trigger \ --destination-run-service=helloworld-events-pubsub-quickstart \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 IDTOPIC_ID
:現有 Pub/Sub 主題的 ID
這項操作會為現有的 Pub/Sub 主題建立名為
events-pubsub-trigger
的觸發條件。請注意,在 Google Cloud 專案中首次建立 Eventarc 觸發條件時,Eventarc 服務代理程式的佈建作業可能會延遲。這個問題通常可以透過再次建立觸發條件來解決。詳情請參閱「權限遭拒錯誤」。
確認觸發條件是否已成功建立:
gcloud eventarc triggers list --location=us-central1
events-pubsub-trigger
會列出目的地為 Cloud Run 服務helloworld-events-pubsub-quickstart
。
產生及查看 Pub/Sub 主題事件
您可以將訊息發布至 Pub/Sub 主題,藉此產生 Eventarc 事件。
找出並將 Pub/Sub 主題設為環境變數:
export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \ --format='value(transport.pubsub.topic)')
將訊息發布至 Pub/Sub 主題,產生事件:
gcloud pubsub topics publish $RUN_TOPIC --message "Hello World!"
事件會轉送至 Cloud Run 服務,並記錄事件訊息。
如要查看服務建立的事件相關記錄項目,請執行下列指令:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.pubsub.topic.v1.messagePublished"'
尋找類似下列內容的記錄項目:
jsonPayload: ... message: 'Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World!'
恭喜!您已成功將事件接收器服務部署至 Cloud Run、建立 Eventarc 觸發條件、從 Pub/Sub 產生事件,並在 Cloud Run 記錄檔中查看該事件。
清除所用資源
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。
您可以:
-
這也會刪除相關聯的 Pub/Sub 主題。
或者,您也可以刪除 Google Cloud 專案,以免產生費用。 刪除 Google Cloud 專案後,系統就會停止對專案使用的所有資源收取費用。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
如果打算進行多個教學課程及快速入門導覽課程,重複使用專案有助於避免超出專案配額限制。