比较 Cloud Run functions

本指南比较了用于部署函数的最新和原始 Google Cloud 选项。本页面可帮助之前使用 Cloud Functions API 创建函数并正在改用 Cloud Run Admin API 的用户。本页介绍了概念、配置、部署以及触发器和重试等多个方面存在的主要差异。

比较

Cloud Run functions 有两个版本:

  • Cloud Run functions,可通过以下任一方式创建:

    • Cloud Run Admin API(推荐):使用此 API 创建的函数(例如,使用 Google Cloud 控制台、gcloud run、REST API 或 Terraform 创建的函数)或作为服务部署在 Cloud Run 上
    • Cloud Functions v2 API:使用此 API 创建的函数(例如,使用 gcloud functions、REST API 或 Terraform 创建的函数)可以通过 Cloud Run Admin API 以及 Cloud Functions v2 API 进行管理。使用此 API 时,您可以在部署函数时指定触发器。了解如何分离 v2 API 函数,以便仅使用 Cloud Run Admin API 环境进行管理。
  • Cloud Run 函数(第 1 代)(以前称为 Cloud Functions [第 1 代])是函数的原始版本,具有有限的事件触发器和可配置性。

通过将函数直接部署到 Cloud Run 上,函数将自动构建为容器并部署为 Cloud Run 服务。

概念

下表总结了函数的概念差异。

Cloud Run functions Cloud Run functions(第 1 代)
旧产品名称 Cloud Functions (第 2 代) Cloud Functions (第 1 代)
资源模型 函数是从源代码部署的 Cloud Run 服务 从源代码部署函数
函数术语类型
  • HTTP 函数
  • 所有语言运行时都支持 CloudEvents 函数(也称为事件驱动型函数)。
  • HTTP 函数
  • 只有 Ruby、.NET 和 PHP 运行时支持 CloudEvents。对于 Node.js、Go、Python 和 Java,请使用后台函数创建事件驱动型函数。
分配的 HTTPS 网址 run.app

使用 Cloud Functions v2 API 创建的函数也具有 cloudfunctions.net 端点。
cloudfunctions.net
映像注册表 仅限 Artifact Registry Artifact Registry 或 Container Registry(已弃用)
用于部署的 IAM 角色
内部基础设施 Cloud Run Google 内部
定价模式 Cloud Run 价格 Cloud Run functions(第 1 代)价格

配置

Cloud Run 会将函数构建到容器中,并将其部署为服务。将函数部署到 Cloud Run 后,您可以完全访问和控制该函数的行为。例如,您可以启用直接 VPC、配置 GPU、使用卷装载等。

下表总结了函数的配置差异:

Cloud Run functions Cloud Run functions(第 1 代)
请求超时
  • 对于 HTTP 触发的函数,最长 60 分钟
  • 对于使用 Cloud Functions v2 API 创建的 CloudEvents 函数,最长 9 分钟
  • 最长 9 分钟
实例大小 最多搭载 4 个 vCPU,提供最高 16 GiB 的 RAM 最多搭载 2 个 vCPU,提供最高 8 GB 的 RAM
并发 每个函数实例最多 1000 个并发请求 每个函数实例 1 个并发请求
流量拆分 支持 不支持

部署

自 2024 年 8 月起,您可以使用 Cloud Run 部署和管理使用 Cloud Functions v2 API 创建的函数。此次变更的影响如下:

  • 函数元数据(例如运行时 ID 和 build 配置)存储在 Cloud Run 服务定义中。
  • 您可以使用 Cloud Run Admin API 安全地修改函数。
  • 您可以将 Cloud Run 服务定义用作函数的真实来源。

不过,请注意,使用 Cloud Run Admin API 创建的函数无法使用 Cloud Functions API 进行修改。

下表总结了创建、部署、修改和管理函数的方式的差异:

Cloud Run functions Cloud Run functions(第 1 代)
Google Cloud 控制台 Cloud Run Cloud Run functions(第 1 代)
Cloud SDK
REST API
  • run.googleapis.com(v1 和 v2),适用于使用 Cloud Run Admin API 或 Cloud Functions API 创建的函数。
Terraform

触发器和重试

下表比较了函数的触发器和重试:

Cloud Run functions Cloud Run functions(第 1 代)
触发和调用函数 对于使用 Cloud Run Admin API 创建的函数,您可以在 Google Cloud 控制台中部署函数时指定触发器,也可以在使用 gcloud CLI 部署函数后指定触发器。

对于使用 Cloud Functions v2 API 创建的函数,您可以在部署函数时指定触发器。
您可以在部署函数时指定触发器。
事件类型 支持 Eventarc 所支持的任何事件类型,包括通过 Cloud Audit Logs 提供的 90 多个事件来源。 直接支持来自 7 个来源的事件
重试 对于使用 Cloud Run Admin API 创建的函数,更新 Eventarc 中的重试政策,并在 Pub/Sub 中配置死信主题

对于使用 Cloud Functions v2 API 创建的函数,您可以在部署函时使用 --retry 标志指定重试。
您可以在部署函数时使用 --retry 标志指定重试。

分离函数

使用 Cloud Functions v2 API 创建的函数(例如,使用 gcloud functions、REST API 或 Terraform)可以从其现有 API 环境中分离出来。分离函数后,您只能使用 Cloud Run Admin API 对其进行管理。如果工作负载需要保留在 Assured Workloadsrun.googleapis.com API 边界内,或者需要确保工作负载使用 Cloud Run SKU,则您可能需要执行此操作。如需了解详情,请参阅 Cloud Functions v2 API 文档中的管理函数

后续步骤