部署定时Cloud Function需为服务账号配置哪些额外IAM角色?
Firebase定时触发云函数服务账号部署失败解决方案
问题背景
为部署我的Firebase项目,我为服务账号配置了以下角色:
- Cloud Functions Admin
- Firebase Admin
- Service Account User
该配置可正常部署Hosting以及由Firestore、HTTPS触发的Cloud Functions,但部署定时触发函数时失败,需要补充对应权限角色。
排查过程
初始部署日志
i functions: updating Node.js 14 function schedule-statistics(europe-west3)... ... ✔ functions[schedule-statistics(europe-west3)]: Successful update operation. ... Functions deploy had errors with the following functions: schedule-statistics(europe-west3)
对比测试
使用本地登录的CLI部署时会输出如下额外日志,而使用服务账号部署时无该条日志,可判断问题出在定时任务的配置权限上:
✔ functions[schedule-statistics(europe-west3)]: Successful upsert schedule operation.
权限校验结果
添加日志排查后,确认服务账号缺失以下权限:
The principal (user or service account) lacks IAM permission "cloudscheduler.jobs.get" ... The principal (user or service account) lacks IAM permission "cloudscheduler.jobs.update"
最终解决方案
为对应服务账号添加 Cloud Scheduler Admin 角色即可正常部署。
注意:IAM权限不会跨项目生效,配置角色时请确认操作的是目标Firebase项目,避免不必要的排查成本,我之前就是误将该角色配置在了其他项目下,浪费了一下午时间才定位到问题。
内容的提问来源于stack exchange,提问作者Louis Coulet
相关产品推荐
相关产品推荐

