如何将Firebase项目从CF1切换至新的Cloud Functions(CF2)?
切换Firebase项目指向新Cloud Functions(CF2)的操作步骤
核心思路
本质是逐步将CF1的流量迁移至CF2,全程保留回滚能力,避免直接切换导致服务中断。
1. 完成CF2的测试与部署
- 先在本地验证CF2的所有函数逻辑、依赖包、触发器(HTTP、Firestore事件、Auth事件等)与CF1完全一致,确保没有功能遗漏或逻辑错误
- 执行
firebase deploy --only functions将CF2部署到同一个Firebase项目下,建议给CF2的函数加区分标识(比如CF1的createUser改成createUserV2,或统一加v2_前缀),避免和CF1重名冲突
2. 分场景迁移流量
场景1:HTTP触发器函数
- 直接修改前端/客户端的请求地址,将原CF1的函数URL替换为CF2的对应URL
- 若需要平滑过渡,可通过Firebase Hosting的重写规则做灰度发布,先导部分流量到CF2,验证稳定后再全量切换:
// firebase.json 配置示例 { "hosting": { "rewrites": [ { "source": "/api/createUser", "function": "createUserV2", "condition": { "percent": 50 // 50%流量分流到CF2 } }, { "source": "/api/createUser", "function": "createUser" // 剩余流量保留在CF1 } ] } }
场景2:后台触发器函数(Firestore/Auth/Storage等)
- 这类由事件触发的函数无法做灰度,需先部署CF2的触发器,再禁用CF1的触发器:
- 进入Firebase控制台 → 云函数页面 → 找到CF1的对应函数
- 点击函数右侧的「更多」按钮 → 选择「禁用」
- 观察CF2的日志(控制台→云函数→日志),确认事件正常触发后,再删除CF1的函数(防止误触发)
3. 验证与回滚
- 切换完成后,持续监控CF2的日志和调用指标,确认无报错、功能正常
- 若出现问题,立即回滚:HTTP函数改回原CF1的URL,后台触发器重新启用CF1并禁用CF2
4. 清理旧资源
- 确认CF2稳定运行72小时以上后,删除CF1的所有函数,释放闲置资源
内容的提问来源于stack exchange,提问作者whatwhatwhat
相关产品推荐
相关产品推荐

