Я создал проект в 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
Проверьте, что учетная запись службы, которую вы используете для запуска этой команды, имеет правильные права.Роль вычислительного движка. Это можно сделать здесь: 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
Эта команда назначит роль compute.admin учетной записи службы new-sa.
$ gcloud auth activate-service-account --key-file=key.json
$ gcloud compute instances list
И с этими, выдавать себя зановый-saучетную запись службы, используя уже загруженный файл key.json, и выполните соответствующую команду для получения списка экземпляров вимя-некоторого-проектапроект. Если это успешно, то проблема в чем-то другом.
решение2
Первый раз я создал учетную запись службы "cloud66" в тестовом периоде Google. Скорее всего, это повлияло на права доступа. Затем я переключил тарификацию с тестового периода на платную. Я удалил и заново создал учетную запись службы cloud66 в разделе "APIs & Services -> Credentials". Но в разделе "IAM" была политика доступа для "cloud66" с ролью "ComputeAdmin". Когда я удалил политику доступа из раздела "IAM" и заново создал учетную запись службы, проблема решилась.