目标
编写、部署和触发可访问 Spanner 的 HTTP Cloud Functions 函数。
费用
本文档使用了 Spanner 和 Cloud Run functions,它们是 Google Cloud 的收费组件。
如需了解 Spanner 的使用费用,请参阅 Spanner 价格。
如需了解 Cloud Run functions 的使用费用(包括免费调用),请参阅 Cloud Run functions 价格。
准备工作
本文档假设您有一个名为
test-instance
的 Spanner 实例和一个使用音乐应用架构的名为example-db
的数据库。如需了解如何创建实例以及使用音乐应用架构的数据库,请参阅《快速入门:使用控制台》或者 Go、Java、Node.js 或 Python 版使用入门教程。启用 Cloud Run functions 和 Cloud Build API。
-
如果您已经安装 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 文件并将其解压缩。
切换到包含用于访问 Spanner 的 Cloud Run functions 函数示例代码的目录:
Node.js
cd nodejs-docs-samples/functions/spanner/
Python
cd python-docs-samples/functions/spanner/
Go
cd golang-samples/functions/spanner/
Java
cd java-docs-samples/functions/spanner/
查看示例代码:
Node.js
Python
Go
Java
该函数会发送一个 SQL 查询以从数据库中提取所有
Albums
数据。当您向该函数的端点发出 HTTP 请求时,系统即会执行该函数。
部署函数
如需使用 HTTP 触发器部署该函数,请在 spanner
目录中运行以下命令:
Node.js
gcloud functions deploy nodejs-spanner-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=spannerQuickstart
--trigger-http
使用 --runtime
标志可以指定支持的 Node.js 版本的运行时 ID 来运行您的函数。
Python
gcloud functions deploy python-spanner-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=spanner_read_data
--trigger-http
使用 --runtime
标志可以指定支持的 Python 版本的运行时 ID 来运行您的函数。
Go
gcloud functions deploy go-spanner-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloSpanner
--trigger-http
Java
gcloud functions deploy java-spanner-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.HelloSpanner \ --memory=512MB
--trigger-http
使用 --runtime
标志可以指定支持的 Java 版本的运行时 ID 来运行您的函数。
将 REGION 替换为要在其中部署函数的 Google Cloud 区域的名称(例如 us-west1
)。
函数部署最多可能需要 2 分钟。
当您的函数完成部署时,请记下系统返回的 url
值。当您触发函数时,将使用该值。
您可以在 Google Cloud 控制台中的 Cloud Run functions 页面上查看已部署的函数。还可以在该页面上创建和修改函数,并获取函数的详细信息和诊断信息。
触发函数
向您的函数发出 HTTP 请求:
curl URL
将 URL 替换为函数完成部署时返回的网址值。
假如您完成了入门教程中的步骤并填充了数据库,此时应该会在输出内容中看到 SQL 查询结果:
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
您还可以通过在浏览器中访问该函数的网址来查看 SQL 查询结果。
清理
为避免系统因本文档中使用的 Spanner 和 Cloud Run functions 资源向您的 Google Cloud 账号收取额外费用,请执行以下操作:
删除实例:
gcloud spanner instances delete test-instance
删除您部署的函数:
Node.js
gcloud functions delete nodejs-spanner-function
Python
gcloud functions delete python-spanner-function
Go
gcloud functions delete go-spanner-function
Java
gcloud functions delete java-spanner-function