本简单教程演示了如何使用 Cloud Pub/Sub 触发器编写、部署和触发 Cloud Functions 后台函数。
如果您刚接触 Pub/Sub,并且希望了解详情,请参阅 Pub/Sub 文档,特别是管理主题和订阅。如需简要了解如何在 Cloud Functions 中处理 Pub/Sub 主题和订阅,请参阅 Google Cloud Pub/Sub 触发器。
如果您要查找使用 Pub/Sub 本身的代码示例,请访问 Google Cloud 示例浏览器。
目标
- 编写和部署 Cloud Functions 后台函数。
- 向 Pub/Sub 主题发布消息以触发函数。
费用
本教程使用 Cloud Platform 的可计费组件,包括:
- Cloud Functions
- Pub/Sub
您可使用价格计算器根据您的预计使用情况来估算费用。
Cloud Platform 新用户可能有资格申请免费试用。准备工作
-
登录您的 Google 帐号。
如果您还没有 Google 帐号,请注册新帐号。
-
在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能。
- 启用 Cloud Functions and Cloud Pub/Sub API。
- 安装并初始化 Cloud SDK。
-
准备开发环境。
Node.js
Python
Go
Java
C#
Ruby
如果您已安装 Cloud SDK,请运行以下命令进行更新:
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 文件并将其解压缩。
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
或者,您也可以下载该示例的 zip 文件并将其解压缩。
切换到包含用于访问 Pub/Sub 的 Cloud 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/
C#
cd dotnet-docs-samples/functions/helloworld/HelloPubSub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
查看示例代码:
Node.js
Python
Go
Java
C#
Ruby
部署函数
如需部署带有 Pub/Sub 触发器的函数,请在包含示例代码(如果是 Java,则为 pom.xml
文件)的目录中运行以下命令:
Node.js
gcloud functions deploy helloPubSub \ --runtime nodejs10 \您可以使用
--trigger-topic YOUR_TOPIC_NAME
--runtime
标志的以下值来指定偏好的 Node.js 版本:
nodejs10
nodejs12
nodejs14
(公开预览版)
Python
gcloud functions deploy hello_pubsub \ --runtime python38 \您可以使用
--trigger-topic YOUR_TOPIC_NAME
--runtime
标志的以下值来指定偏好的 Python 版本:
python37
python38
python39
(公开预览版)
Go
gcloud functions deploy HelloPubSub \ --runtime go113 \您可以使用
--trigger-topic YOUR_TOPIC_NAME
--runtime
标志的以下值来指定偏好的 Go 版本:
go111
(已弃用)go113
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java11 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
C#
gcloud functions deploy csharp-pubsub-function \ --entry-point HelloPubSub.Function \ --runtime dotnet3 \
--trigger-topic YOUR_TOPIC_NAME
Ruby
gcloud functions deploy hello_pubsub --runtime ruby26 \您可以使用
--trigger-topic YOUR_TOPIC_NAME
--runtime
标志的以下值来指定偏好的 Ruby 版本:ruby26
ruby27
其中,YOUR_TOPIC_NAME
是函数将订阅的 Pub/Sub 主题的名称。
如果 YOUR_TOPIC_NAME
不存在,则此命令会为您创建。您还可以在运行 deploy
命令之前,使用 Cloud Console 或以下 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 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
要删除项目,请执行以下操作:
- 在 Cloud Console 中,转到管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
删除 Cloud Functions 函数
删除 Cloud Functions 函数不会移除存储在 Cloud Storage 中的任何资源。
如需删除您在本教程中创建的 Cloud Functions 函数,请运行以下命令:
Node.js
gcloud functions delete helloPubSub
Python
gcloud functions delete hello_pubsub
Go
gcloud functions delete HelloPubSub
Java
gcloud functions delete java-pubsub-function
C#
gcloud functions delete csharp-pubsub-function
Ruby
gcloud functions delete hello_pubsub
您也可以通过 Google Cloud Console 删除 Cloud Functions 函数。