Firebase Functions分组如何保留HTTP函数原名及触发重复问题咨询
问题1解答:HTTP函数分组保留原名称的实现方法
可以实现,你只需要在定义HTTP函数时显式指定name运行时参数,即可覆盖分组默认添加的前缀规则,同时保留分组部署的能力。
示例代码如下:
如果你使用的是v2版本的Firebase Functions SDK:
const functions = require('firebase-functions/v2'); // 定义cars分组,可统一配置区域、内存等公共参数 const carsGroup = functions.region('us-central1'); // 导出时显式指定name参数为原函数名 exports.Ferrari = carsGroup.https.onRequest({ name: 'Ferrari' }, (req, res) => { // 函数业务逻辑 });
如果你使用的是v1版本的Firebase Functions SDK:
const functions = require('firebase-functions'); const carsGroup = functions.region('us-central1'); exports.Ferrari = carsGroup.runWith({ name: 'Ferrari' }).https.onRequest((req, res) => { // 函数业务逻辑 });
配置后部署,函数最终名称就是Ferrari,不会添加分组前缀,既不需要修改客户端调用地址,也不会暴露分组命名满足逆向防护需求,同时你依然可以通过单条命令部署该分组下的所有函数,不会出现重复的函数条目。
问题2解答:同触发条件的两个函数同时存在的运行规则
这种情况下两个函数都会被触发,不会只运行最新部署的版本。
Firebase控制台中显示的每个函数条目都是独立的资源,只要函数处于启用状态、触发条件匹配事件,就会被独立调用。如果你同时保留了未分组的Ferrari和分组后的cars-Ferrari两个同触发条件的函数,事件会同时分发到两个函数执行,会产生双倍的调用次数费用,也可能导致业务逻辑重复执行出现异常,不需要的旧函数建议手动删除。
内容的提问来源于stack exchange,提问作者Kartik Watwani
相关产品推荐
相关产品推荐

