本簡單教學課程將示範如何使用 Pub/Sub 觸發程序,編寫、部署及觸發事件驅動型 Cloud Run 函式。
如果您是 Pub/Sub 新手,想進一步瞭解相關資訊,請參閱 Pub/Sub 說明文件,特別是管理主題和訂閱項目。如要瞭解如何在 Cloud Run 函式中使用 Pub/Sub 主題和訂閱項目,請參閱「Pub/Sub 觸發條件」一文。
目標
- 編寫及部署事件導向的 Cloud Run 函式。
- 將訊息發布至 Pub/Sub 主題,藉此觸發函式。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
- Cloud Run functions
- Pub/Sub
如要根據預測用量估算費用,請使用 Pricing Calculator。
事前準備
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
-
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
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
-
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
- 準備開發環境。 <0x
如果您已安裝 gcloud CLI,請執行下列指令來更新:
gcloud components update
準備應用程式
將應用程式存放區範例複製到本機電腦中:
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 格式的範例,然後解壓縮該檔案。
變更為包含 Cloud Run 函式範例程式碼的目錄,以存取 Pub/Sub:
Node.js
cd nodejs-docs-samples/functions/helloworld/
Python
cd python-docs-samples/functions/helloworld/
Go
cd golang-samples/functions/helloworld/
Java
cd java-docs-samples/functions/helloworld/hello-pubsub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
查看程式碼範例:
Node.js
Python
Go
Java
Ruby
部署函式
如要使用 Pub/Sub 觸發條件部署函式,請在包含範例程式碼的目錄中執行下列指令 (如果是 Java,則在 pom.xml
檔案中執行):
Node.js
gcloud functions deploy helloPubSub \ --runtime nodejs20 \
--trigger-topic YOUR_TOPIC_NAME
使用 --runtime
標記指定支援的 Node.js 版本執行階段 ID,以執行函式。
Python
gcloud functions deploy hello_pubsub \ --runtime python312 \
--trigger-topic YOUR_TOPIC_NAME
使用 --runtime
標記指定支援的 Python 版本執行階段 ID,以執行函式。
Go
gcloud functions deploy HelloPubSub \ --runtime go121 \
--trigger-topic YOUR_TOPIC_NAME
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
使用 --runtime
標記指定支援的 Java 版本執行函式的執行階段 ID。
Ruby
gcloud functions deploy hello_pubsub --runtime ruby33 \
--trigger-topic YOUR_TOPIC_NAME
使用 --runtime
標記指定支援的 Ruby 版本執行階段 ID,以執行函式。
其中 YOUR_TOPIC_NAME
是函式要訂閱的 Pub/Sub 主題名稱。
如果 YOUR_TOPIC_NAME
不存在,這項指令會為您建立。您也可以在執行 deploy
指令前,使用Google Cloud 主控台或下列 gcloud
指令建立主題:
gcloud pubsub topics create YOUR_TOPIC_NAME
觸發函式
將訊息發布至 Pub/Sub 主題。在本例中,訊息是函式會在問候語中加入的名稱:
gcloud pubsub topics publish
YOUR_TOPIC_NAME
--messageYOUR_NAME
將
YOUR_TOPIC_NAME
替換為 Pub/Sub 主題名稱,並將YOUR_NAME
替換為任意字串。檢查記錄以確定執行已經完成:
gcloud functions logs read --limit 50
您也可以從函式內部將訊息發布至 Pub/Sub 主題。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
刪除專案
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
如要刪除專案:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
刪除函式
刪除 Cloud Run 函式不會移除儲存在 Cloud Storage 中的任何資源。
如要刪除您在本教學課程中建立的函式,請執行下列指令:
Node.js
gcloud functions delete helloPubSub
Python
gcloud functions delete hello_pubsub
Go
gcloud functions delete HelloPubSub
Java
gcloud functions delete java-pubsub-function
Ruby
gcloud functions delete hello_pubsub
您也可以從 Google Cloud 控制台刪除 Cloud Run 函式。