部署 Cloud Run functions(第 1 代)
本指南介绍了如何从源代码部署旧版第 1 代 Cloud Run functions 函数。如果您要创建新函数,请参阅 Cloud Run 上的控制台快速入门。
部署过程会获取源代码和配置设置并构建可运行的映像,Cloud Run functions 自动管理这一过程,以便处理对函数的请求。
部署基础知识
部署 Cloud Run functions 的用户必须具有 Cloud Run functions Developer IAM 角色或具有提供相同权限的其他角色。另请参阅其他部署配置。
使用 gcloud CLI 部署函数,如下所示:
使用
gcloud functions deploy命令部署函数:gcloud functions deploy YOUR_FUNCTION_NAME \ [--gen2] \ --region=YOUR_REGION \ --runtime=YOUR_RUNTIME \ --source=YOUR_SOURCE_LOCATION \ --entry-point=YOUR_CODE_ENTRYPOINT \ TRIGGER_FLAGS
第一个参数
YOUR_FUNCTION_NAME是已部署函数的名称。函数名称必须以字母开头,后面最多可跟 62 个字母、数字、连字符或下划线,但必须以字母或数字结尾。--gen2标志用于指定要部署到 Cloud Run functions。从 2024 年 9 月起,这将成为默认设置。如需部署到第 1 代,请使用--no-gen2。--region标志指定要在其中部署函数的区域。如需查看 Cloud Run functions 支持的区域列表,请参阅位置。--runtime标志指定函数使用的语言运行时。Cloud Run functions 支持多种运行时;如需了解详情,请参阅运行时。--source标志用于指定函数源代码的位置。如需了解详情,请参阅以下部分:--entry-point标志指定源代码中函数的入口点。这是在您的函数运行时执行的代码。此标志的值必须是源代码中存在的函数名称或完全限定类名称。如需了解详情,请参阅函数入口点。如需为函数指定触发器,需要使用额外的标志(上文表示为
TRIGGER_FLAGS),具体取决于您要使用的触发器:触发器标志 触发器说明 --trigger-http通过 HTTP(S) 请求触发函数。如需了解详情,请参阅 HTTP 触发器。 --trigger-topic=YOUR_PUBSUB_TOPIC在消息发布到指定的 Pub/Sub 主题时触发函数。如需了解详情,请参阅 Pub/Sub 触发器。 --trigger-bucket=YOUR_STORAGE_BUCKET在指定的 Cloud Storage 存储桶中创建或覆盖对象时触发函数。如需了解详情,请参阅 Cloud Storage 触发器。 --trigger-event=EVENT_TYPE
[--trigger-resource=RESOURCE]在发生指定事件时触发函数。对于某些事件类型,需要指定资源。如需了解详情,请参阅 Cloud Run functions(第 1 代)支持的触发器。 如需查看有关部署命令及其标志的完整参考信息,请参阅
gcloud functions deploy文档。如需了解一些示例部署命令,请参阅命令行示例。
从本地机器部署
本部分介绍了如何使用 gcloud CLI 通过位于本地机器的源代码部署函数。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用
gcloud functions deploy命令,按照上面的部署说明执行操作。对于
--source标志,请指定函数源代码根目录的本地文件系统路径;有关详情,请参阅源目录结构。如果省略此标志,系统会使用当前工作目录。您还可以视需要使用
--stage-bucket标志指定要在部署期间将源代码上传到的 Cloud Storage 存储桶。在上传源代码期间,Cloud Run functions 会通过
.gcloudignore文件排除不必要的文件。-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用
gcloud functions deploy命令,按照上面的部署说明执行操作。对于
--source标志,请指定以gs://开头的 Cloud Storage 路径。路径上的对象必须是包含函数源代码的 ZIP 文件。函数源文件必须位于 ZIP 文件的根目录下;有关详情,请参阅源目录结构。- 该函数使用 Node.js 22。
- 源代码位于当前工作目录 (
.) 中。 - 代码中的入口点名为
myHttpFunction。 - 该函数处理 Pub/Sub 消息发布事件。
- 该函数使用 Python 3.9。
- 源代码位于 Cloud Storage 中的
gs://my-bucket/my_function_source.zip路径下。 - 代码中的入口点名为
pubsub_handler。 - 该函数处理 Cloud Storage 对象删除事件。
- 该函数使用 Java 11。
- 源代码位于本地
./functions/storage-function路径下。 - 代码中的入口点名为
myproject.StorageFunction。 - 详细了解 Cloud Run functions 触发器。
- 了解 Cloud Run functions 函数构建流程。
- 了解更多 Cloud Run functions 配置选项。
- 了解如何确保 Cloud Run functions 的安全。
从 Cloud Storage 部署
本部分介绍了如何使用 gcloud CLI 通过保存在 Cloud Storage 存储桶中的源代码部署函数。源代码必须打包为 ZIP 文件。
为了让 Cloud Run functions 从 Cloud Storage 存储桶中读取数据,您必须向执行部署的账号授予 storage.objects.get 权限。
如需了解如何控制对存储桶的访问权限,请参阅 Cloud Storage 文档中的使用 IAM 权限部分。
有了此权限,您现在可以从 Cloud Storage 部署函数:
命令行示例
本部分介绍了一些示例部署场景的部署命令。
如需详细了解 Cloud Run functions 支持的各种触发器,请参阅 Cloud Run functions 触发器。
本地源代码中的 HTTP 函数
假设您有一个符合如下描述的 HTTP 函数:
如需将该函数部署到区域 us-central1 中名为 my-http-function 的 Cloud Functions(第 2 代),请使用以下命令:
gcloud functions deploy my-http-function \
--no-gen2 \
--region=us-central1 \
--runtime=nodejs22 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
来自 Cloud Storage 中源代码的 Pub/Sub 函数
假设您有一个事件驱动型函数,如下所示:
如需将该函数部署到区域 europe-west1 中名为 my-pubsub-function 的 Cloud Run functions,并使该函数由 Pub/Sub 主题 my-topic 中的消息触发,请使用以下命令:
gcloud functions deploy my-pubsub-function \
--no-gen2 \
--region=europe-west1 \
--runtime=python312 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
来自本地源代码的 Cloud Storage 函数
假设您有一个事件驱动型函数,如下所示:
如需将该函数部署到区域 asia-northeast1 中名为 my-storage-function 的 Cloud Run functions,并使该函数由 Cloud Storage 存储桶 my-bucket 中的事件触发,请使用以下命令:
gcloud functions deploy my-storage-function \
--no-gen2 \
--region=asia-northeast1 \
--runtime=java17 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-resource=gs://my-bucket \
--trigger-event=google.storage.object.delete