本简易教程演示了如何使用 Pub/Sub 触发器编写、部署和触发事件驱动的 Cloud Run functions 函数。
如果您刚接触 Pub/Sub,并且希望了解详情,请参阅 Pub/Sub 文档,特别是管理主题和订阅。如需简要了解如何在 Cloud Run functions 中处理 Pub/Sub 主题和订阅,请参阅 Pub/Sub 触发器。
准备应用
将示例应用代码库克隆到本地机器:
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 文件并将其解压缩。
切换到包含用于访问 Pub/Sub 的 Cloud Run functions 示例代码的目录:
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 nodejs22 \
--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 主题发布消息。