本教學課程說明如何使用經過驗證的 Cloud Run 服務部署容器化應用程式,並透過 Pub/Sub 接收事件。Pub/Sub 是一項全代管的即時訊息傳遞服務,可讓您在不同應用程式之間收發訊息。
建立 Artifact Registry 標準存放區
建立 Artifact Registry 標準存放區,用於儲存容器映像檔:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
將 REPOSITORY
替換成存放區的專屬名稱。
將事件接收器部署至 Cloud Run
部署 Cloud Run 服務,記錄事件內容。
複製 GitHub 存放區:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
您也可以 下載 zip 格式的範例,然後解壓縮該檔案。
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
您也可以 下載 zip 格式的範例,然後解壓縮該檔案。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
您也可以 下載 zip 格式的範例,然後解壓縮該檔案。
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
您也可以 下載 zip 格式的範例,然後解壓縮該檔案。
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
您也可以 下載 zip 格式的範例,然後解壓縮該檔案。
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
您也可以 下載 zip 格式的範例,然後解壓縮該檔案。
變更為包含 Cloud Run 範例程式碼的目錄:
Node.js
cd nodejs-docs-samples/eventarc/pubsub/
Python
cd python-docs-samples/eventarc/pubsub/
Go
cd golang-samples/eventarc/pubsub/
Java
cd java-docs-samples/eventarc/pubsub/
Ruby
cd ruby-docs-samples/eventarc/pubsub/
C#
cd dotnet-docs-samples/eventarc/pubsub/
建構容器並上傳至 Cloud Build:
gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
將容器映像檔部署至 Cloud Run:
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
在「Allow unauthenticated invocations to trigger-pubsub (y/N)?」(允許未經驗證的叫用來觸發 trigger-pubsub (y/N)?) 提示中,輸入
n
代表「否」。
看到 Cloud Run 服務網址時,表示部署作業已完成。
建立 Eventarc 觸發條件
訊息發布至 Pub/Sub 主題時,事件會觸發 Cloud Run 服務。
建立觸發條件,監聽 Pub/Sub 訊息:
新增 Pub/Sub 主題
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
這會建立新的 Pub/Sub 主題,以及名為
trigger-pubsub
的觸發條件。現有 Pub/Sub 主題
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 IDTOPIC_ID
:現有 Pub/Sub 主題的 ID
這項操作會為現有的 Pub/Sub 主題建立名為
trigger-pubsub
的觸發條件。請注意,在 Google Cloud 專案中首次建立 Eventarc 觸發條件時,Eventarc 服務代理程式的佈建作業可能會延遲。這個問題通常可以透過重新建立觸發條件來解決。詳情請參閱「權限遭拒錯誤」。
確認觸發條件是否已成功建立。請注意,雖然觸發條件會立即建立,但最多可能需要兩分鐘才能正常運作。
gcloud eventarc triggers list --location=${REGION}
傳回的觸發條件狀態應為
ACTIVE: Yes
。
產生及查看活動
將訊息發布至 Pub/Sub 主題,產生事件並觸發 Cloud Run 服務。Cloud Run 服務會在服務記錄中記錄訊息。
找出並將 Pub/Sub 主題設為環境變數:
export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \ --format='value(transport.pubsub.topic)')
將訊息傳送到 Pub/Sub 主題,產生事件:
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
事件會傳送至 Cloud Run 服務,該服務會記錄事件訊息。
查看服務建立的事件相關記錄項目:
gcloud logging read 'textPayload: "Hello there!"'
記錄項目內容大致如下:
textPayload: 'Hello, Hello there!'
記錄需要一些時間才會出現。如果沒有立即看到記錄,請稍候片刻再查看一次。