部署预定 Cloud Functions 的服务帐户角色是什么?
What service account roles to deploy a scheduled Cloud Function?
为了部署我的 Firebase 项目,我设置了一个具有以下角色的服务帐户:
- 云功能管理员
- Firebase 管理员
- 服务帐户用户
它适用于由 Firestore 或 HTTPS 触发的托管和云功能,但失败并显示 function on schedule。
我需要什么额外的角色?
编辑:唯一相关的输出消息是:
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”时,它起作用了!
我被误导了,因为我已经将此角色设置为服务帐户,但在 另一个项目 中,它不会传播! 教训以牺牲一个愉快的下午为代价学习。
答案是:添加角色“Cloud Scheduler Admin”。
问题是:在一个项目中为服务帐户设置的角色不会传播到其他项目中的同一服务帐户。
很好的教训是:添加 --debug
以查看其他日志,包括缺少的权限,感谢@Dharmaraj
为了部署我的 Firebase 项目,我设置了一个具有以下角色的服务帐户:
- 云功能管理员
- Firebase 管理员
- 服务帐户用户
它适用于由 Firestore 或 HTTPS 触发的托管和云功能,但失败并显示 function on schedule。
我需要什么额外的角色?
编辑:唯一相关的输出消息是:
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”时,它起作用了!
我被误导了,因为我已经将此角色设置为服务帐户,但在 另一个项目 中,它不会传播! 教训以牺牲一个愉快的下午为代价学习。
答案是:添加角色“Cloud Scheduler Admin”。
问题是:在一个项目中为服务帐户设置的角色不会传播到其他项目中的同一服务帐户。
很好的教训是:添加 --debug
以查看其他日志,包括缺少的权限,感谢@Dharmaraj