比较 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 函数 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 函数 Cloud Run functions(第 1 代)
请求超时
  • 对于 HTTP 触发的函数,最长 60 分钟
  • 对于使用 Cloud Functions v2 API 创建的 CloudEvents 函数,最长 9 分钟
  • 最长 9 分钟
实例大小 最多搭载 4 个 vCPU,提供最高 16 GiB 的 RAM 最多搭载 2 个 vCPU,提供最高 8 GB 的 RAM
并发 每个函数实例最多 1,000 个并发请求 每个函数实例 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 函数 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 函数 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 进行管理。如果您的工作负载需要保持在 run.googleapis.com API 边界内(针对可靠工作负载),或者您需要确保工作负载使用 Cloud Run SKU,则可能需要执行此操作。如需了解详情,请参阅 Cloud Functions v2 API 文档中的管理函数部分。

后续步骤