为服务账号绑定Cloud Build角色提示不支持该资源该如何解决?
报错原因
你收到的报错是因为使用了错误的IAM权限绑定命令:
gcloud iam service-accounts add-iam-policy-binding命令的作用是给「服务账号这个资源本身」配置访问策略,比如允许其他身份模拟、管理该服务账号,不支持给服务账号分配项目级操作角色roles/cloudbuild.builds.builder属于GCP项目级角色,需要绑定到项目资源上才能分配给对应服务账号,所以会触发「角色不支持当前资源」的错误提示
解决方案
你只需要执行项目级IAM绑定命令即可完成授权,注意将下方命令里的<PROJECT_ID>替换为你实际使用的GCP项目ID:
gcloud projects add-iam-policy-binding <PROJECT_ID> \ --member='serviceAccount:github-actions@<PROJECT_ID>.iam.gserviceaccount.com' \ --role='roles/cloudbuild.builds.builder'
权限验证(可选)
执行以下命令可以验证角色是否配置成功:
gcloud projects get-iam-policy <PROJECT_ID> \ --filter="bindings.members:serviceAccount:github-actions@<PROJECT_ID>.iam.gserviceaccount.com" \ --format="value(bindings.role)"
输出结果中包含roles/cloudbuild.builds.builder就代表授权已生效,你就可以使用该服务账号通过Github Actions启动Cloud Build任务了。
如果你的流水线还需要操作其他GCP资源(比如推送镜像到制品仓库、部署到Cloud Run等),按照同样的格式授予对应角色即可。
内容的提问来源于stack exchange,提问作者xetra11
相关产品推荐
相关产品推荐

