我在 GCP 中创建了项目。然后我创建了具有Compute Admin
角色的服务帐户。之后,我Compute Engine API
为我的项目启用了此功能,但无法使用实例:
#gcloud compute instances list
ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
- Required 'compute.zones.list' permission for 'projects/someproject'
我究竟做错了什么 ?
答案1
检查您用于运行该命令的服务帐户是否具有正确的Compute Engine 角色。您可以在此处执行此操作:IAM 和管理 > IAM。
- 更新 -
为了检查服务帐户具有正确的权限在 Cloud Shell 中运行以下命令:
$ gcloud iam service-accounts keys create key.json \ --iam-account [email protected]
上述命令将以 JSON 格式创建并下载此服务帐户的密钥。
$ gcloud projects add-iam-policy-binding some-project-name \ --member serviceAccount:[email protected] \ --role=roles/compute.admin
此命令将为 new-sa 服务帐户分配 compute.admin 角色。
$ gcloud auth activate-service-account --key-file=key.json
$ gcloud compute instances list
用这些来冒充新萨使用已经下载的key.json文件登录服务账户,并执行相应的命令列出实例某个项目名称项目。如果成功,则问题出在其他地方。
答案2
我第一次在 Google 测试期间创建了服务帐户“cloud66”。这很可能影响了访问权限。然后我将计费从测试期切换为付费期。我在“API 和服务 -> 凭据”部分中删除并重新创建了 cloud66 服务帐户。但在“IAM”部分中有一个针对“cloud66”的访问策略,其角色为“ComputeAdmin”。当我从“IAM”部分删除访问策略并重新创建服务帐户时,问题就解决了。