Cloud Run functions 函数在由操作系统版本、插件软件包、语言支持以及支持和调用函数的 Ruby Functions 框架库组成的环境中运行。此环境由语言版本进行标识,称为运行时 ID。
函数准备
您可以直接在 Google Cloud 控制台中准备函数,也可以在本地机器上编写函数并上传该函数。如需准备本地机器以用于 Ruby 开发,请参阅设置 Ruby 开发环境。
支持的 Ruby 运行时和基础映像
运行时 | 运行时 ID | 堆栈 | 运行时基础映像 |
---|---|---|---|
Ruby 3.3 | ruby33 |
|
|
Ruby 3.2 | ruby32 |
|
|
Ruby 3.0 | ruby30 | google-18-full | google-18-full/ruby30 |
Ruby 2.7 | ruby27 | google-18-full | google-18-full/ruby27 |
Ruby 2.6 | ruby26 | google-18-full | google-18-full/ruby26 |
选择运行时
您可以在部署期间为您的函数选择一种受支持的 Ruby 运行时。
您可以使用 Google Cloud 控制台或 gcloud CLI 选择运行时版本。点击相应标签页即可获取有关所选工具的使用说明:
gcloud
在部署函数时,使用 --base-image
标志为函数指定 Ruby 基础映像。例如:
gcloud run deploy FUNCTION \
--source . \
--function FUNCTION_ENTRYPOINT \
--base-image ruby33
您需要进行如下替换:
将 FUNCTION 替换为您要部署的函数的名称。您可以完全省略此参数,但如果省略它,系统将提示您输入名称。
将 FUNCTION_ENTRYPOINT 替换为源代码中函数的入口点。这是 Cloud Run 在您的函数运行时执行的代码。此标志的值必须是源代码中存在的函数名称或完全限定类名称。
如需详细了解如何使用 gcloud CLI 部署函数,请参阅在 Cloud Run 中部署函数。
控制台
您可以在 Google Cloud 控制台中创建或更新 Cloud Run 函数时选择运行时版本。如需详细了解如何部署函数,请参阅在 Cloud Run 中部署函数。
如需在 Google Cloud 控制台中创建函数时选择运行时,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Cloud Run 页面。
点击编写函数。
在运行时列表中,选择一个 Ruby 运行时版本。
点击创建,然后等待 Cloud Run 使用占位符修订版创建服务。
控制台会将您重定向到来源标签页,您可以在其中查看函数的源代码。点击保存并重新部署。
如需详细了解如何在函数部署后更新运行时版本,请参阅重新部署新源代码。
源代码结构
为了让 Cloud Run functions 找到函数的定义,源代码必须遵循特定结构。如需了解详情,请参阅编写 Cloud Run 函数。
指定依赖项
以 Ruby 编写的 Cloud Run 函数使用 bundler 访问依赖项。
Cloud Functions 框架是所有函数都必需的依赖项。虽然 Cloud Run functions 会在创建函数时代表您安装该框架,但为清楚起见,我们建议您将其添加为显式依赖项。
如果函数依赖于专用依赖项,我们建议您将 functions-framework
镜像到您的私有注册表。将镜像的 functions-framework
作为依赖项添加到函数中,以避免从公共互联网安装软件包。
每个函数必须提供一个 Gemfile
,用于指定 functions_framework
gem 以及函数所需的任何其他 gem。Gemfile
必须与包含函数代码的 app.rb
文件位于同一目录中。此外,您的函数必须提供锁定文件,以指定所有传递依赖项及其确切版本。此文件 Gemfile.lock
和 Gemfile
也位于同一目录中。
部署您的函数时,Cloud Run 会使用 bundler
下载并安装 Gemfile
和 Gemfile.lock
中声明的依赖项。
Gemfile
会列出函数所需的软件包以及所有可选版本限制条件。如需了解详情,请参阅 Gemfile 参考文档。
下面给出了一个示例 Gemfile
:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
封装本地依赖项
您还可以将依赖项与函数一起进行打包和部署。如果依赖项不能使用 rubygems 软件包管理器使用,则此方法非常有用。
如需在本地打包 gem,请将其加入函数目录结构的目录中,并在依赖项的 Gemfile
条目中提供路径。gem 目录必须包含有效的 gemspec
文件,并且必须位于函数的目录层次结构中,以便其代码与函数一起部署。例如,您可以使用如下所示的目录结构:
myfunction/ ├── Gemfile ├── Gemfile.lock ├── app.rb └── my_private_gem/ ├── lib/ | └── my_private_gem.rb └── my_private_gem.gemspec
Gemfile
条目可能如下所示:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "my_private_gem", path: "./my_private_gem"
如需详细了解如何引用本地 gem 路径,请参阅 Gemfile 参考文档。