Я создал проект в 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'
Что я делаю не так ?
Первый раз я создал сервисный аккаунт cloud66 в тестовый период Google. Скорее всего, это повлияло на права доступа. Затем я переключил биллинг с тестового периода на платный. Я удалил и заново создал учетную запись службы cloud66 в разделе «API и службы -> Учетные данные». Но была политика доступа для «cloud66» с ролью «ComputeAdmin» в разделе «IAM». Когда я удалил политику доступа из раздела «IAM» и заново создал учетную запись службы, проблема была решена.
Убедитесь, что учетная запись службы, которую вы используете для запуска этой команды, имеет правильный Роль Compute Engine. Вы можете сделать это здесь: IAM & admin> IAM.
-- ОБНОВИТЬ --
Для проверки того, что учетная запись службы имеет правильные разрешения, выполните следующие команды в Cloud Shell:
$ gcloud iam service-accounts keys create key.json \
--iam-account new-sa@some-project-name.iam.gserviceaccount.com
Приведенная выше команда создаст и загрузит ключ для этой учетной записи службы в формате JSON.
$ gcloud projects add-iam-policy-binding some-project-name \
--member serviceAccount:new-sa@some-project-name.iam.gserviceaccount.com \
--role=roles/compute.admin
Эта команда назначит роль compute.admin учетной записи службы new-sa.
$ gcloud auth activate-service-account --key-file=key.json
$ gcloud compute instances list
И с этим олицетворять new-sa сервисный аккаунт, используя уже загруженный файл key.json, и выполните соответствующую команду, чтобы вывести список экземпляров в какое-то имя-проекта проект. Если это успешно, проблема в другом месте.