使用 Ruby(第 1 代)创建和部署 HTTP Cloud Run 函数
本指南将引导您完成使用 Ruby 运行时编写 Cloud Functions 函数的过程。Cloud Run 函数有两种类型:
- HTTP 函数,通过标准 HTTP 请求调用。
- 事件驱动型函数,用于处理来自云基础设施的事件,例如 Pub/Sub 主题中收到消息或 Cloud Storage 存储桶发生更改。
本指南中的示例演示了如何创建简单的 HTTP 函数。
准备工作
- 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 Build APIs.
-
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 Build APIs.
- 安装并初始化 gcloud CLI。
- 更新并安装
gcloud
组件:gcloud components update
- 准备开发环境。
创建一个函数
在本地系统上为函数代码创建一个目录:
Linux 或 Mac OS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
在
helloworld
目录中创建一个app.rb
文件,其中包含以下内容:此示例函数会获取 HTTP 请求中提供的姓名并返回问候语;或者,如果没有提供姓名,则返回“Hello World!”。
指定依赖项
Ruby 依赖项可通过 bundler 进行管理,并在名为 Gemfile
的文件中表示。
部署您的函数时,Cloud Functions 会使用 bundler
下载并安装 Gemfile
和 Gemfile.lock
中声明的依赖项。
Gemfile
会列出函数所需的软件包以及所有可选版本限制条件。对于 Cloud Functions 函数,其中一个软件包必须是 functions_framework
gem。
在此练习中,在包含函数代码的 app.rb
文件所在的目录中创建名为 Gemfile
的文件,其中包含以下内容:
source "https://rubygems.org" gem "functions_framework", "~> 0.7"
运行以下命令安装 functions_framework
gem 和其他依赖项:
bundle install
在本地构建和测试
在部署函数之前,您可以在本地构建和测试该函数。运行以下命令以使用 functions-framework-ruby
可执行文件启动运行 hello_http
函数的本地 Web 服务器:
bundle exec functions-framework-ruby --target hello_http
# ...starts the web server in the foreground
如果函数成功构建,它会显示一个网址,您可以在网络浏览器中访问该网址,以查看实际应用中的函数:http://localhost:8080/
。您应该会看到 Hello World!
消息。
或者,您也可以从另一个终端窗口使用 curl
向此函数发送请求:
curl localhost:8080
# Output: Hello World!
请参阅 Ruby Functions 框架文档中的测试函数。
部署该函数
如需使用 HTTP 触发器部署该函数,请在 helloworld
目录中运行以下命令:
gcloud functions deploy hello_http --no-gen2 --runtime ruby32 --trigger-http --allow-unauthenticated
通过 --allow-unauthenticated
标志,您可以在不进行身份验证的情况下访问函数。如需进行身份验证,请省略此标志。
测试已部署的函数
当函数完成部署时,请记下
httpsTrigger.url
属性,或使用以下命令查找该属性:gcloud functions describe hello_http
该属性应如下所示:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http
在浏览器中访问此网址。您应该会看到一条“Hello World!”消息。
尝试通过 HTTP 请求传递姓名,例如使用以下网址:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http?name=NAME
您应该会看到一条“Hello
NAME
!”消息。
查看日志
您可以在 Cloud Logging 界面中或通过 Google Cloud CLI 查看 Cloud Run 函数日志。
使用命令行工具查看日志
如需使用 gcloud CLI 查看函数的日志,请使用 logs read
命令,后跟函数名称:
gcloud functions logs read hello_http
输出应类似于以下内容:
LEVEL NAME EXECUTION_ID TIME_UTC LOG D helloHttp rvb9j0axfclb 2019-09-18 22:06:25.983 Function execution started D helloHttp rvb9j0axfclb 2019-09-18 22:06:26.001 Function execution took 19 ms, finished with status code: 200
在 Logging 信息中心内查看日志
您还可以通过 Google Cloud 控制台查看 Cloud Functions 函数的日志。