在Cloud Run和Eventarc的支持下,Cloud Functions for Firebase(第 2 代)有可能为您提供更强大的基础设施、对性能和可扩展性的高级控制,以及对函数运行时的更多控制。此预览文档解释了第二代预览中的新功能和此时可用的功能,并提供了有关如何使用新 API 的一些指导,无论是单独使用还是与 Cloud Functions for Firebase(第一代)API 一起使用。
Cloud Functions for Firebase(第 2 代)的新功能
Cloud Functions for Firebase(第 2 代)中当前可用的更改和增强功能包括:
- 函数实例现在可以一次执行多个请求。此功能适用于具有一个专用 CPU 或更高版本的功能。可以在每个函数的基础上或使用
setGlobalOptions
方法跨所有函数设置并发级别。如果未指定,具有 1 个专用 CPU 或更高的新功能将默认为 80 个并发请求。请参阅允许并发请求。 - 使用新的
cors
设置保护您的可调用函数和 HTTP 函数。 HTTP 触发器现在也有一个cors
设置,使 CORS 更易于管理。 - Cloud Functions 现在建立在Cloud Run之上。如果您不熟悉 Cloud Run,请不要担心:构建函数与以前一样简单。 Cloud Run 是一种更现代的无服务器产品,可为您提供更好的性能、更好的配置、更好的监控等。
- Google 与行业领导者合作创建了CloudEvents 规范。事件处理函数现在使用这个开放标准作为它们的事件签名。
- 新的触发器类型包括Firebase Alerts 触发器、Firebase Extensions 的自定义事件触发器,以及用于在 Cloud Tasks 上运行资源密集型任务的任务队列函数(第一代也提供任务队列函数)。
-
firebase-functions
SDK 经过重新设计,更适合现代 JavaScript。您可以全局配置第二代功能,使用选项对象,并使用模块化导入。 - 如果长时间运行的工作负载需要,HTTP 函数现在可以有1 小时的超时时间(之前为 9 分钟) 。
- 函数实例现在默认为默认计算服务帐户,而不是应用引擎服务帐户。
预览期间的限制
Cloud Functions 2nd gen 的预览尚未包含完整的计划功能集,也不提供与 Cloud Functions(第 1 代)完全相同的功能。它在触发器和可用区域方面受到限制,并且具有本节中描述的其他当前限制。
当前可用的 Cloud Functions 位置
Cloud Functions 第二代目前在以下地区可用:
-
europe-north1
-
europe-west1
-
europe-west4
-
us-central1
-
us-east1
-
us-west1
当前可用的 Cloud Functions 触发器
第二代 Cloud Functions 支持以下 Firebase 后台触发器:
- Firebase 实时数据库
- 云储存
- Firebase 警报
- 发布/订阅
- 可调用物
- 云任务
- HTTP
- 预定功能
- Firebase 身份验证阻止功能
- Firebase 远程配置
- Firebase 测试实验室
Cloud Functions 2nd gen当前不支持以下触发器:
- 云端 Firestore
- Firebase 身份验证
onCreate
和onDelete
- 谷歌分析
其他限制
这些限制也适用于第二代 Cloud Functions:
- 函数名称仅限于小写字母、数字和破折号。
- 完全可观察性尚未内置到 Firebase CLI 或 Firebase 控制台中。要观察您的函数实例,请使用底层Cloud Run 服务的 Google Cloud Console。
- Firebase Local Emulator Suite 目前在第二代中支持 HTTP、云存储和 Pub/Sub 功能。
- HTTP 函数尚不支持
cloudfunctions.net
URL;暂时,您会看到.run.app
URL。此限制还会影响可调用函数和任务队列函数的调用(有关可接受的解决方法,请参阅相应的指南)。 - 2代还没有优化冷启动,暂时可能比1代慢很多。但是,由于并发性,最终用户总体上应该经历更少的冷启动。