我有一台机器需要运行以下gcloud命令:gcloud projects list --format=json
给出的输出错误:ERROR: (gcloud.projects.list) PERMISSION_DENIED: Request had insufficient authentication scopes.
很明显,为机器设置的当前配置和帐户没有权限。
有趣的是,当我使用gcloud compute instances list --project=<project_ID> --format=json
它给出了我指定的项目中列出的机器列表。
我启用了Google Resource Manager API
我甚至创建了一些服务帐户凭据并在机器中激活它们。还是一样的错误。
在SDK documentation中没有关于如何启用凭据以查看其他项目的参考
以前有人有过这个问题吗?我看到过时的问题,其解决方案对我来说没有用。
编辑
我应该提一下,有问题的机器是一个GCE实例,没有办法(除非我手动安装SDK,这是一个我不打算进入的混乱)来更新SDK。
Cloud API访问范围是手动设置的,没有提到“资源管理器”,我似乎无法添加或删除任何新的API访问
根据this document,gcloud projects list
显示所有活动项目的帐户都拥有所有者,编辑或查看器项目级别的角色。只要您在实例中激活的服务帐户在gcp项目中具有其中一个角色,您就应该能够运行该命令。
例如,从您的云外壳授予查看者角色到您的服务帐户:
gcloud projects add-iam-policy-binding <your_project_id> \
--member serviceAccount:<your_service_account> --role roles/viewer
使用json key file激活实例中的服务帐户:
gcloud auth activate-service-account --key-file=/path/key.json
运行项目列表命令:
gcloud projects list --format=json