Я использую 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
?