为了部署我的 Firebase 项目,我设置了一个具有以下角色的服务帐户:
- 云功能管理员
- Firebase 管理员
- 服务帐号用户
它适用于由 Firestore 或 HTTPS 触发的托管和云功能,但它会因按计划执行功能而失败。
我还需要什么额外的角色?
编辑:唯一相关的输出消息是:
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.
编辑:通过按照@Dharmaraj 的建议添加日志,我可以看到缺少的权限:
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”时,它可以工作!
我被误导了,因为我已经将此角色设置为服务帐户但在另一个项目中,并且它不会传播!以牺牲一个美好的下午为代价的教训。