Создание нового проекта в Google Cloud с использованием python без учетных данных сервисной учетной записи

Я собираюсь сделать автоматизированного менеджера проектов Google Cloud на основе pythonic. Просто тестирую кучу моделей Tensorflow и прочее. Даже когда у меня есть полный доступ к обучению, развертыванию и тестированию моделей внутри проекта, я не могу создавать новые проекты, поскольку я аутентифицирован с помощью учетной записи службы через:

google.oauth2.service_account.Credentials.from_service_account_file("thisisakey.json")

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

googleapiclient.discovery.build("cloudresourcemanager", "v1", cache_discovery=False)

Фалис с:

Service accounts cannot create project without a parent.

Таким образом, либо создание/нахождение «родителя» для этого проекта, либо вход в более «мощную» учетную запись могут решить эту проблему. Но я не могу их понять. Существуют ли какие-либо другие типы учетных данных для загрузки и встраивания в python? Могу ли я создать проект из python? Все, что я проверял по этому поводу, имеет по крайней мере 2 года и кажется очень устаревшим (тогда проекты просто невозможно было создавать через API)

Обновление: я попытался создать проект, используя флаг «родительский» в теле проекта, в организации, созданной на основе корпорации, над которой я работаю. и даже если эта учетная запись службы имеет роли «Владелец» и «Администратор организации», запросы на создание завершаются с ошибкой:

 Encountered 403 Forbidden with reason "forbidden"
 User is not authorized.

Так что проблема сохраняется.


person Irribarra Cristián    schedule 10.12.2018    source источник


Ответы (1)


Вы можете назначать привилегии учетным записям служб, чтобы делать что угодно в Google Cloud. Вы попали в один из немногих, которые вы не можете.

Проблема в том, что ваш проект не является частью Organization (у вас нет родителя). Ваше решение состоит в том, чтобы либо настроить организации, либо создать свои проекты через Google Cloud Console. Примечание. Я не рекомендую создавать проекты с помощью программного обеспечения. Вам также необходимо настроить выставление счетов, чтобы сделать что-нибудь полезное.

В Google Cloud существует два типа учетных данных: учетные данные пользователя и учетные данные служебной учетной записи. Вы не можете внедрить учетные данные учетной записи пользователя в приложение. Учетные данные учетной записи пользователя создаются в интерактивном режиме как часть процесса входа/аутентификации с использованием OAuth 2.0.

Существуют и другие типы доступа к облачным службам, такие как ключи API, но они не относятся к вашей проблеме.

Краткое руководство по использованию организаций

person John Hanley    schedule 10.12.2018
comment
Большое спасибо, если затем я настрою организацию, активирую API через оболочку gcloud и настрою биллинг следующим образом: developers.google.com/resources/api-libraries/documentation/ должно ли это работать? - person Irribarra Cristián; 11.12.2018
comment
Да, за исключением того, что после того, как вы включите организации, появится больше наборов разрешений, которые вам нужны на уровне org. - person John Hanley; 12.12.2018