Google cloud platform Google Cloud IAM中缺少云功能用户代理角色

Google cloud platform Google Cloud IAM中缺少云功能用户代理角色,google-cloud-platform,google-cloud-functions,google-iam,Google Cloud Platform,Google Cloud Functions,Google Iam,我正在一个谷歌云项目中处理一系列的云功能,出于某种原因,我突然出现了以下错误: Deployment failure: Missing necessary permission resourcemanager.projects.getIamPolicy for service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com on resource projects/la-cloud-functions. Please grant ser

我正在一个谷歌云项目中处理一系列的云功能,出于某种原因,我突然出现了以下错误:

Deployment failure:
Missing necessary permission resourcemanager.projects.getIamPolicy for service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com on resource projects/la-cloud-functions. Please grant service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com the Cloud Functions Service Agent role. You can do that by running 'gcloud iam service-accounts add-iam-policy-binding projects/la-cloud-functions --member=service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com --role=Cloud Functions Service Agent'
除了格式错误的错误响应(您不能有
--role=Cloud Functions服务代理
——它应该是
--role=roles/cloudfunctions.serviceAgent
),当我尝试运行修改后的命令时:

gcloud iam service-accounts add-iam-policy-binding projects/la-cloud-functions --member=service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com --role=roles/cloudfunctions.serviceAgent
我得到这个错误:

The requested URL <code>/v1/projects/la-cloud-functions/serviceAccounts/projects/la-cloud-functions:getIamPolicy?alt=json</code> was not found on this server.
最后,试图通过控制台分配云功能服务器代理角色给了我另一个惊喜——该角色在列表中缺失,应该在服务管理下:

我已尝试通过使用以下命令重新启用云函数API来重置服务帐户:

gcloud服务启用cloudfunctions.googleapis.com

但同样没有成功

有人知道如何解决这个问题并使云功能服务代理角色再次可用吗


TIA-Joe

尝试以下步骤来解决此问题:

禁用云函数API:

gcloud services disable cloudfunctions.googleapis.com --project la-cloud-functions
gcloud services enable cloudfunctions.googleapis.com --project la-cloud-functions
等待大约一分钟,以完成禁用

使用CLI或使用IAM下的GCP控制台删除云功能成员帐户。

gcloud projects remove-iam-policy-binding la-cloud-functions --member="serviceAccount:service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com" --role="roles/cloudfunctions.serviceAgent"
等一下。然后验证此成员是否已在IAM下的GCP控制台中删除

启用云函数API:

gcloud services disable cloudfunctions.googleapis.com --project la-cloud-functions
gcloud services enable cloudfunctions.googleapis.com --project la-cloud-functions
返回GCP控制台。您应该找到一位新的谷歌云功能服务代理成员。

gcloud projects remove-iam-policy-binding la-cloud-functions --member="serviceAccount:service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com" --role="roles/cloudfunctions.serviceAgent"
注意:

您使用了错误的命令来添加
cloudfunctions.serviceAgent
。以下是正确的命令:

gcloud projects add-iam-policy-binding la-cloud-functions --member="serviceAccount:service-1092904037961@gcf-admin-robot.iam.gserviceaccount.com" --role="roles/cloudfunctions.serviceAgent"

约翰,非常感谢你的完整回答。当我试图通过shell禁用云函数成员帐户时,它说我需要先删除所有函数。我没有在不必要的情况下采取非常激烈的步骤,而是使用了您修改后的命令添加了cloudfunctions.serviceAgent——这非常有效,我能够运行cloudbuild来部署我的功能。我希望这将解决任何其他问题,如果没有,我将经历禁用/启用过程。@JoeLowery-很高兴能提供帮助。如果你不每天使用IAM,它可能会变得复杂/混乱。同样的问题是,@JohnHanley你最后的命令对我来说已经足够了。谢谢如果其他人遇到这种情况,我运行了John Hanley在其回答中提供的服务帐户创建脚本,但它没有显示出来。谷歌在IAM页面右上角添加了一个“包括谷歌提供的角色授权”复选框,单击该复选框,它们就会出现。