准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create HelloWorld HTTP Cloud Function
/ 50
Create Gopher HTTP Cloud Function
/ 50
Go 是一种开源编程语言,可用于轻松构建简单、可靠且高效的软件。使用 Cloud Shell 时,系统已安装 Go。
Cloud Run functions 是一种用于构建和连接云服务的无服务器执行环境。借助 Cloud Run functions,您可以编写单一用途的函数,并将其关联到从云基础架构和服务发出的事件。当所监控的事件发生时,就会触发您的函数。您的代码将在 Cloud Run 的全托管式环境中执行。您无需预配任何基础架构,也不必费心管理任何服务器。
您可以使用受支持的编程语言编写 Cloud Run 函数。您可以将函数在任意受支持语言的标准运行时环境中运行,从而轻松实现移植和本地测试。
在本实验中,您将使用 Go 创建一个 Cloud Run 函数。通过 HTTP 调用该函数时,它将显示由 Renee French 设计的 Go Gopher 图像。
本实验假设您已熟悉 Go。虽然实验中提供了 Go 代码的说明,但对于 Go 的初学者而言,这些说明可能不够详尽。
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在“实验详细信息”窗格中找到“用户名”。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在“实验详细信息”窗格中找到“密码”。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
在弹出的窗口中执行以下操作:
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
输出:
输出:
gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
某些 Compute Engine 资源位于区域和可用区内。区域是指某个地理位置,您可以在其中运行自己的资源。每个区域包含一个或多个可用区。
在 Cloud Shell 中运行以下 Cloud Shell 命令,设置实验的默认区域和可用区:
curl 下载包含本实验代码的 zip 文件:unzip 解压缩代码。这会解压缩一个目录 (golang-samples-main),其中包含用于 cloud.google.com 的 Go 代码示例:gopher 目录中包含以下目录和文件:
Go 版 HTTP Cloud Run 函数编写为 http.HandlerFunc 函数,这是 Go 标准库中定义的接口。该函数必须满足以下条件:
http.HandlerFunc 类型,即函数的形式为 func(http.ResponseWriter, *http.Request)(有关如何使用 Go 编写完整 Web 应用的详细指南,请参阅编写 Web 应用教程)。例如,下面是一个“Hello, world”函数:
golang-samples-main/functions/codelabs/gopher/hello.go 文件。functions/codelabs/gopher 目录中,使用 gcloud functions deploy 命令部署该函数:此过程需要一到两分钟。
输出:
点击检查我的进度以验证是否完成了以下目标:
gcloud services enable cloudfunctions.googleapis.com 命令启用该 API。gcloud 命令所在的目录)包含 .go 文件。您可以使用 cd golang-samples/functions/codelabs/gopher 命令切换到该目录。HelloWorld,也就是您要部署的 Go 函数名称。gcloud functions add-iam-policy-binding HelloWorld \
--member="allUsers" \
--role="roles/cloudfunctions.invoker" \
--region=
完成 IAM 政策绑定后,使用前面的部署命令重新部署该函数。httpsTrigger 网址。它应如下所示:HelloWorld 函数,请使用 curl 命令访问刚才输出的网址:输出:
您已成功编写并部署了一个 HTTP Cloud Run 函数!
现在,我们来让“Hello, world”函数更有趣一些,让它在每次收到请求时输出一张 Gopher 图像。
以下代码块展示了实现这一功能的代码。您可以在 Cloud Shell 中查看该代码,路径为 golang-samples-master/functions/codelabs/gopher/gopher.go。
该文件以包声明和注释开头。所有 Go 代码都写在一个包内,顶部有类似这样的声明。
import 块列出了该文件依赖的其他包。在文件的其余部分,这些包将通过其名称进行调用。例如,若要使用 http 包中的 ResponseWriter 类型,应写作 http.ResponseWriter。
接下来是 Gopher 函数声明。
该函数首先通过 os.Open 函数读取 gophercolor.png 文件(参考示例代码)。
然后,它会检查读取文件时是否出错。文件损坏或在上传时不小心被遗漏都可能导致读取错误。
它使用 io.Copy 将 Gopher 图像复制到 w,即 http.ResponseWriter 参数。写入 w 的所有内容都会随 HTTP 响应一同发送。
如果写入响应时没有出错,函数将正常返回。
gcloud functions deploy 命令和函数名称 Gopher 部署函数:系统询问是否允许未经身份验证调用新函数时,请输入 Y。
若要测试函数,请访问上一条命令输出中的函数网址。如果部署成功,您将在浏览器中看到 Gopher 图像!
下一步是添加测试,以确保函数继续正常运行。
点击检查我的进度以验证是否完成了以下目标:
Go 版 HTTP Cloud Run 函数使用标准库中的 testing 和 httptest 包进行测试。测试函数无需运行模拟器或其他模拟环境,只需使用常规 Go 代码即可。
以下是 Gopher 函数的测试示例:
func MyTest(t *testing.T)。该函数必须已导出,并接收一个类型为 *testing.T 的参数。httptest 包创建用于测试的响应和请求对象。cd 命令切换到包含待测试文件的目录:golang-samples-main/functions/codelabs/gopher 目录中,运行 go test 命令:输出:
gopher.go 和 gopher_test.go 文件所在的目录 (golang-samples-main/functions/codelabs/gopher)?接下来,您将创建一个二进制文件(在 Go 中为 package main),以便在本地运行函数,并在浏览器中试用。
若要在本地运行 HTTP 函数,您需要创建一个 HTTP 服务器,并将函数注册为其处理程序。(有关如何使用 Go 编写完整 Web 应用的详细指南,请参阅编写 Web 应用教程)。
您可以在函数的子目录中为函数编写一个 HTTP 服务器。
按照 Go 惯例,将该目录命名为 cmd,并在其中创建一个名为 main.go 的文件。
package main 作为包。main 包将构建为一个可运行的二进制文件。github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher,其路径基于与函数文件同目录的 go.mod 文件中的 module 行确定。在编写函数时,您可以自由命名模块。func main() 是该二进制文件的入口点。它将 gopher.Gopher 函数注册为 HTTP 处理程序,并使用 http.ListenAndServe 启动服务器。输出:
由于函数会从当前工作目录加载 gophercolor.png 图像,因此您必须从 gophercolor.png 文件所在目录启动二进制文件。-o start 标志表示将输出的二进制文件命名为 start。./cmd 表示要构建位于 cmd 目录中的二进制文件。
现在,使用 Cloud Shell 的网页预览功能在浏览器中测试服务器。
8080。Cloud Shell 会在新的浏览器窗口中,通过其代理服务打开预览网址。网页预览功能会限制访问权限,仅允许您的用户账号通过 HTTPS 进行访问。
如果一切正常,您应该会看到 Go Gopher!
gopher.go 和 gopher_test.go 文件所在的目录 (golang-samples-main/functions/codelabs/gopher)?go build -o start ./cmd 命令构建服务器,然后运行 ./start 命令启动服务器。成功启动后,系统应输出 Listening on localhost:8080。8080,即服务器正在监听的端口。结束本实验时,您使用的所有资源将被删除。使用自己的环境时,您应始终删除不必要的资源,以节省成本,践行良好的云资源管理实践。
按 CTRL+C 停止提供网址服务。
完成 Cloud Run 函数测试后,您可以使用 gcloud 命令将其删除:
您也可以在控制台中删除该函数。
现在,您已经知道如何使用 Go 版 Cloud Run 函数了!在本实验中,您学习了如何编写 Go 版 HTTP Cloud Run 函数、如何测试函数,以及如何在本地运行函数。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 9 月 25 日
上次测试实验的时间:2025 年 9 月 25 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验