我试图部署一个OpenVPN访问服务器到谷歌计算引擎,收到以下错误消息:
openvpn-access-server-1-vm: {"ResourceType":"compute.v1.instance","ResourceErrorCode":"EXTERNAL_RESOURCE_NOT_FOUND","ResourceErrorMessage":"The resource 'PROJECT_ID-compute@developer.gserviceaccount.com' of type 'serviceAccount' was not found."}
PROJECT_ID只是我自己的PROJECT_ID的占位符。
在云控制台中,我找不到"计算引擎默认服务帐户"(我想,我去年不小心把它删掉了)。在日志文件中,我发现在2020年它是ACCOUNT_ID,所以我试图用以下命令取消删除它:
gcloud beta iam service-accounts undelete ACCOUNT_ID
我没有成功,我收到:
ERROR: (gcloud.beta.iam.service-accounts.undelete) NOT_FOUND: Not found; Not found AccountDataType for <numeric_id>
& lt; numeric_id>是一个12位数字。
我试图禁用和启用计算服务来恢复默认的服务帐户,但它不成功,我收到:
response:
'@type': type.googleapis.com/google.iam.admin.v1.ServiceAccount
serviceName: iam.googleapis.com
status:
code: 6
message: ALREADY_EXISTS
receiveTimestamp: '2021-08-05T06:45:55.798772716Z'
由于这个错误,我试图删除它,但这也不起作用。
现在我不知道该怎么做,把默认的服务帐户找回来。它是否还存在?为什么不工作?
记住,我说的是PROJECT_ID-compute@developer.gserviceaccount.com。service-PROJECT_ID@compute-system.iam.gserviceaccount.com是存在的,每次我禁用和启用计算引擎API时都会重新创建。
谢谢你的帮助。
由于服务帐户在一年前被删除,因此无法使用以下命令恢复删除,
gcloud beta iam service-accounts undelete ACCOUNT_ID
此操作仅适用于30天内删除的服务帐户。取消删除服务帐户以获取更多信息。
相反,我们可以创建一个新的Service Account并赋予它一个' Editor '角色。作为默认计算引擎服务帐户默认具有相同的角色。有关计算引擎默认服务帐户的详细信息。
现在,我们可以使用新的服务帐户创建一个新的计算引擎VM。设置新实例以作为服务帐户运行以获取更多信息。
如果我们已经有一个正在运行的虚拟机,并且服务帐户被删除了,正如@John Hanley建议的那样,我们可以在Google Cloud Console中编辑虚拟机实例并将新的服务帐户分配给实例。更改实例的服务帐户和访问范围以获取更多信息。
要将新的服务帐户设置为项目上的计算引擎默认服务帐户,我们可以使用以下命令
gcloud alpha compute project-info set-default-service-account
但由于该命令处于alpha启动阶段,因此并非所有人都可以使用。
另一个解决方法是创建一个新项目并在那里部署我们的实例。