本地开发

Cloud Functions 支持多种在标准部署环境之外运行函数的方法。这特别适合迭代开发,以及在部署之前测试函数的情况。

使用场景

无需部署函数即可运行函数的能力可以简化本地测试、数据存放区域限制合规性以及多云部署。

本地测试

每次更改后,通过重新部署函数来测试函数都需要等待部署。相比之下,直接在开发环境中测试函数可以缩短迭代测试周期。

如需详细了解测试,请参阅在部署 Cloud Functions 函数之前先对其进行测试页面。

数据存放区域限制

在某些情况下,法规或政策可能会要求将数据保存在 Cloud Functions 本身无法访问的特定地理、组织或网络边界内。

如果符合数据局部限制的平台与 Cloud Functions 的一个抽象层兼容,您可以直接在该平台上基于这些层运行您的函数。

多云部署

多云函数部署是既定模式,可缓解可靠性关键环境中的停机风险。将函数部署到 Cloud Functions 本身之外的环境,可以降低应用发生计划外停机的风险。

实现选项

在设置专属函数托管环境之前,您需要进行以下两个关键选择:

  • 您想使用哪个抽象层。
  • 您将运行的函数类型。

抽象层

Cloud Functions 本身使用多层架构,其中大部分是开源的。借助这些开源组件,您可以在其他平台上运行针对 Cloud Functions 设计的代码。

此架构中可在 Cloud Functions 基础架构外部运行的两个组件是 Functions 框架Google Cloud CLI 函数模拟器。本文档介绍了其中每个层的用途以及它们如何组合在一起。

下图显示了 Cloud Functions、Cloud Run 和其他基于容器的平台上函数部署的典型布局:

函数封装布局:函数、Functions 框架、Buildpack、主机平台

事件类型

Cloud Functions 有两种主要函数:

HTTP 函数可以由任意 HTTP 请求(例如 webhook)触发,而事件驱动型函数则接收由其他 Google Cloud 产品生成的事件。

选择抽象层

您可以使用 Functions 框架Functions 模拟器在本地运行函数。

Functions 框架是 Cloud Functions 中使用的一组开源库,用于将传入的 HTTP 请求解组为特定于语言的函数调用。您可以使用它们将您的函数转换为可在本地运行的 HTTP 服务。

Functions 模拟器使用云原生 BuildpackDocker 来封装由 Functions 框架创建的 HTTP 服务,并将其构建成可运行的容器,然后在基于 Cloud Functions 函数容器的架构上运行。

这两种方式各有利弊:

  • 基于 Functions 框架的环境通常具有较低的资源需求
  • Functions 框架不需要底层容器化软件(例如 Docker
  • 基于 Functions 框架的环境需要底层语言基础架构(例如软件包管理系统和语言运行时)
  • Functions 模拟器会镜像生产命令,例如调用和部署。
  • Functions 模拟器能够以很高的准确度模拟生产环境中部署的函数的执行情况。

在本地运行函数

Functions 框架和 Functions 模拟器都会向您的函数转发 HTTP 请求。

如需详细了解如何使用 Functions 框架在本地运行函数,请参阅运行 Functions 框架

如需详细了解如何使用 Functions 模拟器在本地运行函数,请参阅使用 Functions 模拟器运行函数