Как gcloud может отображать проекты без включенного API диспетчера ресурсов? - PullRequest
0 голосов
/ 17 июня 2020

Я использую GCP golang sdk и пытаюсь вывести список проектов через cloudresourcemanager service:

res, err := service.Projects.List().Context(ctx).Do()
if err != nil {
    return nil, errors.WithStack(err)
}

и получаю следующую ошибку:

ERROR STACKTRACE: googleapi: Error 403: Cloud Resource Manager API has not been used in project [PROJECTID] before or it is disabled. 
Enable it by visiting https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com/overview?project=[PROJECTID] then retry. 
If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry., accessNotConfigured

Поэтому я не могу перечислить проекты, если хотя бы в одном из них не включен API Resource Manager (что странно).

Однако следующая команда через GCP CLI работает нормально и возвращает все проекты (даже те, у кого не включен Resource Manager API):

gcloud projects list

Я знаю, что CLI использует Python SDK, поэтому я просмотрел его , и этот метод также использует тот же API диспетчера ресурсов:

return page_iterator.HTTPIterator(
    client=self,
    api_request=self._connection.api_request,
    path="/projects",
    item_to_value=_item_to_project,
    items_key="projects",
    extra_params=extra_params,
)

Как такое возможно? Это как-то связано с методом аутентификации? Я использую аутентификацию через токен oauth2 для моего образца golang. Есть ли способ перечислить проекты так же, как gcloud?

...