Как создать проект Google Cloud с включенным API управления услугами?

Мы развертываем наше программное обеспечение от имени (OAuth2) пользователей в Google Cloud. Нам удалось автоматизировать большую часть этого, но кое-что не хватает.

  1. Создание проекта выполняется с помощью https://godoc.org/google.golang.org/api/cloudresourcemanager/v1#ProjectsService.Create
  2. Включение необходимых API (вычислений, хранилищ и т. Д.) Выполняется с помощью google.golang.org/api/servicemanagement/v1#ServicesService.Enable (невозможно публиковать как полную ссылку из-за очень ярких ограничений SO)
  3. Создание экземпляра выполняется с помощью google.golang.org/api/compute/v1#InstancesService.Insert

Недостающий бит находится между шагом 1 и шагом 2: чтобы использовать Service Management API to enable the needed APIs, нам нужно, чтобы в проекте был включен сам API управления службами (как ни парадоксально). Я надеюсь, что должен быть способ создать проект с включенными с самого начала некоторыми API-интерфейсами, возможно, с помощью cloudresourcemanager или, может быть, с помощью https://godoc.org/google.golang.org/api/deploymentmanager./v2, но я его пока не нашел.

Итак, чтобы повторить: кто-нибудь знает, возможно ли (в Go) создать проект Google Cloud с некоторыми конкретными API Google Cloud, включенными сразу после / после создания?




Ответы (2)


Используйте API использования службы: https://cloud.google.com/service-usage/docs/reference/rest/

(обновлено)

person Rob Kochman    schedule 19.04.2017
comment
Да, спасибо, в конце концов я заметил, что в отличие от того, что говорится в документе, мне не нужно явно включать API для использования (см. Сообщение о конце фиксации в camlistore-review.googlesource.com/c/9906/4). Хммм, вы говорите, что мне не следует ожидать, что servicemanagement продолжит работать по умолчанию, и что я должен использовать вместо этого serviceuser? - person mpl; 19.04.2017
comment
serviceuser - это API, ориентированный на потребителя службы. Это полезно тем, что вы можете включать / отключать службы, не включая API управления службами. - person Rob Kochman; 20.04.2017
comment
У меня это не работает. Во-первых, параметр name для метода Enable в документации не описан. В исходном json можно найти действительный путь: \ n- /v1/projects/my-project/services/servicemanagement.googleapis.com:enable, но нужно передать что-то вроде projects / my-project / services / servicemanagement .googleapis.com. Но когда я пытаюсь включить API управления службами, я получаю ответ: googleapi: Ошибка 403: API пользователя службы Google ранее не использовался в проекте xxxx или отключен. - person TvE; 31.08.2017
comment
Я попробовал инструмент gcloud cli, и он отлично справляется с включением. Глядя на HTTP, который он создает, вместо URL-адреса, такого как / v1 / project / ‹proj-id› / services / ‹service›: включить, он использует только / v1 / services / ‹service›: включить и передать идентификатор проекта в body как поле consumerId. Я обманул метод ProjectsServicesService.Enable, чтобы сделать это, передав материал consumerId методу Do (). Похоже, библиотеке нужны исправления ... - person TvE; 31.08.2017
comment
@TvE Yo tve, я получаю ту же ошибку 403: API пользователя службы Google не использовался в проекте. Но я делаю это на питоне. ты когда-нибудь решал это? - person ; 03.09.2019
comment
Попробуйте использовать API использования службы: cloud.google.com/service-usage/ docs / reference / rest - person Rob Kochman; 05.09.2019
comment
@TvE Я могу, но для этого мне потребуется включить api. Вот почему я пытался использовать API пользователя службы, который включен по умолчанию, но я получаю то же самое, что и вы. Я пытаюсь автоматизировать этот процесс, и включение API вручную для каждого проекта не очень эффективно ... есть другие советы? - person ; 06.09.2019
comment
Я обновил ответ. Вы хотите использовать службу, а не пользователь службы - person Rob Kochman; 09.09.2019

Возможности Google Cloud Resource Manager API очень ограничены. делать.

хотя у него есть метод projects.update, он не поддерживает включение API. Вам придется вручную отредактировать проект.

person DaImTo    schedule 19.04.2017