Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform Google Cloud Build在单独项目中部署Cloudfunction的正确权限_Google Cloud Platform_Google Cloud Functions_Google Cloud Build_Google Cloud Iam - Fatal编程技术网

Google cloud platform Google Cloud Build在单独项目中部署Cloudfunction的正确权限

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=[禁止],

对于“构建”和“生产”环境,我们有单独的GCP项目。我想在“Build”项目中使用cloudbuild来在“prod”项目中部署云功能。当遵循以下规则时

值得注意的是,我在构建项目的构建服务帐户中添加了“云功能开发人员”角色,并在项目中添加了“IAM服务帐户用户”角色_ID@appspot.gserviceaccount.com如文档和中所述,当运行构建时,我得到:

错误:(gcloud.functions.deploy)ResponseError:status=[403],code=[禁止],message=[调用方没有权限]

my cloudbuild.yaml的一个简化示例是

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个月后需要再次找出答案时,答案就在那里。