Google cloud platform Google Cloud Build在单独项目中部署Cloudfunction的正确权限
对于“构建”和“生产”环境,我们有单独的GCP项目。我想在“Build”项目中使用cloudbuild来在“prod”项目中部署云功能。当遵循以下规则时 值得注意的是,我在构建项目的构建服务帐户中添加了“云功能开发人员”角色,并在项目中添加了“IAM服务帐户用户”角色_ID@appspot.gserviceaccount.com如文档和中所述,当运行构建时,我得到: 错误:(gcloud.functions.deploy)ResponseError:status=[403],code=[禁止],message=[调用方没有权限] my cloudbuild.yaml的一个简化示例是Google cloud platform Google Cloud Build在单独项目中部署Cloudfunction的正确权限,google-cloud-platform,google-cloud-functions,google-cloud-build,google-cloud-iam,Google Cloud Platform,Google Cloud Functions,Google Cloud Build,Google Cloud Iam,对于“构建”和“生产”环境,我们有单独的GCP项目。我想在“Build”项目中使用cloudbuild来在“prod”项目中部署云功能。当遵循以下规则时 值得注意的是,我在构建项目的构建服务帐户中添加了“云功能开发人员”角色,并在项目中添加了“IAM服务帐户用户”角色_ID@appspot.gserviceaccount.com如文档和中所述,当运行构建时,我得到: 错误:(gcloud.functions.deploy)ResponseError:status=[403],code=[禁止],
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['source', 'repos', 'clone', 'a_mirrored_repo', '--project=build-xxxx']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['functions', 'deploy', 'some_function', '--trigger-http', '--runtime', 'python37', '--project', 'prod-yyyy']
我可以从笔记本电脑上使用gsutil命令行实用程序将我的功能部署到prod,并且可以使用我的cloudbuild.yaml将此功能部署到构建项目中。但我不确定需要为哪些帐户分配哪些角色,以使构建项目能够将cloudfunction部署到prod项目 如果要在prod项目中部署该功能,则必须在prod项目中将构建项目的云构建服务帐户添加为“云功能开发人员”。如果我正确理解了您的描述,那么您已经在构建项目中设置了它 具体来说:在GCP控制台的prod项目中,在IAM>成员下添加一个名为
[build project id]@cloudbuild.gserviceaccount.com
的新成员,并将角色“Cloud Functions Developer”添加到此成员。此时,尝试部署可能会导致错误消息:
错误:(gcloud.functions.deploy)ResponseError:status=[403],
代码=[禁止],消息=[缺少必要的权限]
产品的iam.serviceAccounts.actAs-xxxx@appspot.gserviceaccount.com
关于项目产品xxxx
请答应
刺激-xxxx@appspot.gserviceaccount.com这个
角色/iam.serviceAccountUser角色
你可以通过跑步来做到这一点
'gcloud项目添加iam策略绑定产品xxxx
--成员=prod-xxxx@appspot.gserviceaccount.com--角色=角色/iam.serviceAccountUser'
错误消息中建议的命令稍有错误。正确的语法为:
gcloud projects add-iam-policy-binding prod-xxxx --member='serviceAccount:[build-project-number]@cloudbuild.gserviceaccount.com' --role='roles/iam.serviceAccountUser'
这让我解除了障碍。我将编辑你的答案,包括我采取的具体步骤,以便在6个月后需要再次找出答案时,答案就在那里。