部署 Cloud Run 函数
本指南介绍了如何从源代码部署 Cloud Functions 函数。
部署过程会获取源代码和配置设置并构建可运行的映像,Cloud Functions 自动管理这一过程,以便处理对函数的请求。
部署基础知识
部署 Cloud Run 函数的用户必须具有 Cloud Run functions Developer IAM 角色或具有提供相同权限的其他角色。另请参阅其他部署配置。
选择一个标签页,了解如何使用 gcloud CLI 或 Google Cloud 控制台部署函数。
gcloud
-
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
命令部署函数: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 个字母、数字、连字符或下划线,但必须以字母或数字结尾。 为您的函数创建的 Cloud Run 服务的名称将会将下划线替换为连字符,并且大写字母会转换为小写字母。例如,Function_1
在 Cloud Run 中将被命名为function-1
。--gen2
标志用于指定要部署到 Cloud Run 函数。--region
标志指定要在其中部署函数的区域。如需查看 Cloud Functions 支持的区域列表,请参阅位置。--runtime
标志指定函数使用的语言运行时。Cloud 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-filters=EVENTARC_EVENT_FILTERS
当与指定过滤条件匹配的事件发生时,通过 Eventarc 触发函数。需要指定 --gen2
标志。如需了解详情及更多选项,请参阅 Eventarc 触发器。如需查看有关部署命令及其标志的完整参考信息,请参阅
gcloud functions deploy
文档。如需了解一些示例部署命令,请参阅命令行示例。
控制台
前往 Google Cloud 控制台中的 Cloud Run functions 概览页面:
确保选择您要将 Cloud Functions 函数部署到的 Google Cloud 项目。
点击创建函数。
在环境字段中,选择 Cloud Run 函数。
在函数名称字段中,输入函数的名称。函数名称必须以字母开头,后面最多可跟 62 个字母、数字、连字符或下划线,但必须以字母或数字结尾。 为您的函数创建的 Cloud Run 服务的名称将会将下划线替换为连字符,并且大写字母会转换为小写字母。例如,
Function_1
在 Cloud Run 中将被命名为function-1
。在区域字段中,选择要在其中部署函数的区域。
在触发器部分中,根据所选环境执行以下步骤:
- 在触发器类型字段中,选择要使用的触发器:
- 对于 HTTPS 触发器,请根据是否允许函数进行未经身份验证的调用,选择相应的选项。每个 Cloud Run 函数都有一个 HTTP(S) 触发器的端点。系统默认要求进行身份验证。如需了解详情,请参阅进行身份验证以便调用。
- 对于事件驱动的函数,请选择以下选项之一:Cloud Pub/Sub、Cloud Storage、Cloud Firestore 或其他触发器。如需了解详情,请参阅 Eventarc 触发器。
- 填写必填字段后,点击保存触发器。
- 在触发器类型字段中,选择要使用的触发器:
点击下一步以继续执行代码步骤。
在运行时字段中,选择函数要使用的语言运行时。Cloud Functions 支持多种运行时;如需了解详情,请参阅运行时。
在入口点字段中,输入源代码中函数的入口点。这是在您的函数运行时执行的代码。此标志的值必须是源代码中存在的函数名称或完全限定类名称;如需了解详情,请参阅函数入口点。
在源代码字段中,选择有关如何提供函数源代码的适当选项。如需了解详情,请参阅以下部分:
点击部署。
部署成功完成后,Google Cloud 控制台的 Cloud Functions 概览页面中会显示带有绿色对勾标记的函数。
函数的初始部署可能需要几分钟时间,系统会同时对底层基础架构进行预配。重新部署现有函数时速度会更快,并且传入的流量会自动迁移到最新版本。
从本地机器部署
本部分介绍如何从位于本地机器的源代码部署函数。
gcloud
-
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 Functions 会通过
.gcloudignore
文件排除不必要的文件。
控制台
从 Cloud Storage 部署
本部分介绍如何通过保存在 Cloud Storage 存储桶中的源代码部署函数。源代码必须打包为 ZIP 文件。
为了让 Cloud Run functions 从 Cloud Storage 存储桶中读取数据,Cloud Run functions 服务代理必须具有 storage.objects.get
权限。如果源存储桶与您的函数位于同一项目中,则系统会自动授予此权限。如果存储桶位于其他项目中,您必须手动向服务代理授予此权限。
如需了解如何控制对存储桶的访问权限,请参阅 Cloud Storage 文档中的使用 IAM 权限部分。
有了此权限,您现在可以从 Cloud Storage 部署函数:
gcloud
-
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 文件的根目录下;有关详情,请参阅源目录结构。
控制台
通过 Google Cloud 控制台内嵌编辑器部署
本部分介绍了如何直接从 Google Cloud 控制台使用提供的内嵌编辑器编写和部署函数。
- 使用 Google Cloud 控制台,按照上面的部署说明执行操作,直到进入源代码字段。
- 在源代码字段中,选择內嵌编辑器。
- 根据需要使用提供的编辑器创建或修改源文件,请参阅源目录结构。
- 左侧窗格列出了源文件,并且可让您创建、重命名和删除文件。
- 右侧窗格是一个文本编辑器,您可使用该编辑器修改文件内容。
- 点击部署。
命令行示例
本部分介绍了一些示例部署场景的部署命令。
如需详细了解 Cloud Run 函数支持的各种触发器,请参阅 Cloud Run 函数触发器。
本地源代码中的 HTTP 函数
假设您有一个符合如下描述的 HTTP 函数:
nodejs20
函数会使用 。- 源代码位于当前工作目录 (
.
) 中。 - 代码中的入口点名为
myHttpFunction
。
如需将名为 my-http-function
的函数部署到区域 us-central1
,请使用以下命令:
gcloud functions deploy my-http-function \
--gen2 \
--region=us-central1 \
--runtime=nodejs20 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
来自 Cloud Storage 中源代码的 Pub/Sub 函数
假设您有一个事件驱动型函数,如下所示:
- 该函数处理 Pub/Sub 消息发布事件。
python312
函数会使用 。- 源代码位于 Cloud Storage 中的以下路径下:
gs://my-bucket/my_function_source.zip
。 - 代码中的入口点名为
pubsub_handler
。
如需将该函数部署到区域 europe-west1
中名为 my-pubsub-function
的 Cloud Functions (第 2 代),并使该函数由 Pub/Sub 主题 my-topic
中的消息触发,请使用以下命令:
gcloud functions deploy my-pubsub-function \
--gen2 \
--region=europe-west1 \
--runtime=python312 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
来自本地源代码的 Cloud Storage 函数
假设您有一个事件驱动型函数,如下所示:
- 该函数处理 Cloud Storage 对象删除事件。
java17
函数会使用 。- 源代码位于本地
./functions/storage-function
路径下。 - 代码中的入口点名为
myproject.StorageFunction
。
如需在区域 asia-northeast1
中部署名为 my-storage-function
的函数,并让 Cloud Storage 存储桶 my-bucket
中的事件触发该函数,请使用以下命令:
gcloud functions deploy my-storage-function \
--gen2 \
--region=asia-northeast1 \
--runtime=java17 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
--trigger-event-filters="bucket=my-bucket"
后续步骤
- 详细了解 Cloud Functions 触发器。
- 了解 Cloud Functions 函数构建流程。
- 了解更多 Cloud Functions 配置选项。
- 了解如何确保 Cloud Run 函数的安全。
- 如需查看 Cloud Functions 的特定用例示例,请参阅教程。