libcloud и GCP. Как выполнить аутентификацию, используя сервисную учетную запись - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь использовать Apache libcloud для доступа к GCP и, надеюсь, иметь возможность запускать вычислительные экземпляры. Итак, следуя документации, я создал служебную учетную запись в GCP, связанную с моей электронной почтой, и на данный момент предоставил владельцу доступ. После этого я использую libcloud следующим образом:

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
ComputeEngine = get_driver(Provider.GCE)

driver = ComputeEngine('luca@googlemail.com', 'gcp-key.json', project='first-gcp')

На самом деле отображается URL-адрес и запрашивается ввод кода из него. Когда я нажимаю на URL, я получаю сообщение об ошибке:

The OAuth client was not found.

Это не был рабочий процесс, который я предполагал. Я думал, что предоставление секретного ключа просто впустит меня, и тогда я смогу использовать методы для запуска экземпляров и т. Д. Поэтому я не уверен, правильно ли я поступаю, используя для этого служебную учетную запись в GCP.

Итак, я получаю следующий код с запросом кода:

Итак, я получаю это:

Please Go to the following URL and sign in:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxx&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdevstorage.full_control+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fndev.clouddns.readwrite&state=Libcloud+Request
Enter Code: 

Как мне подойти к этому? В конечном итоге мы будем работать над этим несколькими людьми, поэтому в идеале у каждого человека должен быть свой собственный ключ, и это должно происходить немного автономно в том смысле, что если коды не нужно вводить вручную, это было бы здорово.

1 Ответ

2 голосов
/ 04 ноября 2019

В консоли (https://cloud.google.com/console), выберите ваш проект. Когда ваш проект открыт, выберите «APIs & auth», а затем «Учетные данные», как показано ниже:

В разработке: желательно сделать одиндля каждого можно использовать один для всех в целях тестирования.

В работе: для каждого пользователя, использующего эту службу, создайте учетную запись службы.

При загрузке учетной записи службы необходимо иметьэто файл .pem или .json. Используйте адрес электронной почты из учетной записи службы (если вы откроете json / pem, вы сможете увидеть письмо) и укажите для него правильные значения region / project / email и pathв файл pem.

Код, который вы используете, правильный, избегайте использования имени «ComputeEngine», так как это может быть ключевое слово (даже если это не так, лучшая практика)

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
Driver = get_driver(Provider.GCE)
gce = Driver('your_service_account_email', 'path_to_pem_file',
             datacenter='us-central1-a',
             project='your_project_id')

Посмотрите здесь Если вы запутались в каких-либо шагах, но это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...