我不小心删除了gcp上的服务帐户

时间:2019-05-13 12:05:05

标签: google-cloud-platform google-compute-engine

我不小心删除了在启用计算API时创建的gcp上的服务帐户,现在我已禁用并启用了很多次,但未创建新的服务帐户。

现在我遇到此错误:

  

services-exploring-project)$ gcloud计算实例创建mytest

     

例如,您是指[asia-southeast1-b]区域:[mytest](Y / n)吗?错误:(gcloud.compute.instances.create)无法获取资源:-找不到类型为“ serviceAccount”的资源“ does_not_exist@invalid-project.iam.gserviceaccount.com”。

     

停用计算API

     

services-exploring-project)$ gcloud计算实例创建mytest   例如,您是指[asia-southeast1-b]区域:[mytest](Y / n)吗? ÿ   错误:(gcloud.compute.instances.create)无法获取资源:    -找不到类型为“ serviceAccount”的资源“ does_not_exist@invalid-project.iam.gserviceaccount.com”。

2 个答案:

答案 0 :(得分:0)

尝试使用gcloud app repair

  

gcloud beta应用程序修复-将必需的App Engine功能恢复到当前应用程序

答案 1 :(得分:0)

要在意外删除Compute Engine默认服务帐户后将其恢复,必须按照following documentation中的说明与Compute Engine小组联系。

同时,如果您要继续处理该项目,则可以创建另一个服务帐户,并将其与Compute Engine默认服务帐户具有的相同角色相关联。

此角色(称为编辑器)属于原始类型,您可以here找到有关此角色的更多信息。

通过这种方式,您将能够创建Compute Engine实例。只需执行以下步骤:

设置一些变量;

zone=us-central1-b

PROJECT_NUMBER=$(gcloud projects describe $DEVSHELL_PROJECT_ID --format="value(projectNumber)")

sa_name=no-clone-$PROJECT_NUMBER-compute

创建一个新的服务帐户并通过在该服务帐户和上面说明的原始角色之间添加绑定来更新项目IAM策略;

gcloud iam service-accounts create $sa_name --display-name="Work around deletion of Compute Engine default service account"

sa=$(gcloud iam service-accounts list --filter=$sa_name --format="value(email)") 

gcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID --member="serviceAccount:$sa" --role="roles/editor"

使用新创建的服务帐户创建一个新实例并进行测试;

gcloud compute instances create test01 --zone=$zone --quiet --service-account=$sa

gcloud compute ssh test01 --zone=$zone --command="cat /etc/os-release"

有关身份和访问管理的更多背景,请参阅this documentation