我不小心删除了在启用计算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”。
答案 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。