使用 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. 
- 
          如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 
- 
        如要初始化 gcloud CLI,請執行下列指令: gcloud init
- 
  
  
    Create or select a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 - 
        Create a Google Cloud project: gcloud projects create PROJECT_ID Replace PROJECT_IDwith 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_IDwith your Google Cloud project name.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs: Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable run.googleapis.com logging.googleapis.com pubsub.googleapis.com eventarc.googleapis.com 
- 
      Install the Google Cloud CLI. 
- 
          如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 
- 
        如要初始化 gcloud CLI,請執行下列指令: gcloud init
- 
  
  
    Create or select a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 - 
        Create a Google Cloud project: gcloud projects create PROJECT_ID Replace PROJECT_IDwith 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_IDwith your Google Cloud project name.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Run, Cloud Logging, Pub/Sub, and Eventarc APIs: Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.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 
- 建立觸發條件,監聽 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 專案 ID
- TOPIC_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 主題設為環境變數: - 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!'
- 
這也會刪除相關聯的 Pub/Sub 主題。 
將 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 主題,藉此產生 Eventarc 事件。
恭喜!您已成功將事件接收器服務部署至 Cloud Run、建立 Eventarc 觸發條件、從 Pub/Sub 產生事件,並在 Cloud Run 記錄中查看該事件。
清除所用資源
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。
您可以:
或者,您也可以刪除 Google Cloud 專案,以免產生費用。 刪除 Google Cloud 專案後,系統就會停止對專案使用的所有資源收取費用。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
如果打算進行多個教學課程及快速入門導覽課程,重複使用專案有助於避免超出專案配額限制。