Список проектов Java Api управления ресурсами Google Cloud
Я нахожу способ программно перечислить проекты Google Cloud внутри организации. Я пытаюсь использовать экспортированные учетные данные json для учетной записи службы для достижения этой цели следующим образом:
// More info on the endpoint here:
// https://cloud.google.com/resource-manager/reference/rest/v1/projects/list
final CloudResourceManager cloudResourceManagerService = createCloudResourceManagerService();
final CloudResourceManager.Projects.List listRequest = cloudResourceManagerService
.projects()
.list()
.setFilter("labels.it-restoring:false name:IT-TEST-*");
final ListProjectsResponse listResponse = listRequest.execute();
if (listResponse.isEmpty()) {
throw new RuntimeException("The API did not get any response"); // I never get past here
}
log.info("Listing projects returned: {}", listResponse);
Проблема, которую я обнаруживаю, заключается в том, что я всегда получаю пустой ответ. Хотя я назначил сервисному аккаунту роль владельца. Согласно документам, я мог использоватьroles/
resourcemanager.organizationAdmin
который я тоже установил, но безуспешно. Я создаю объект api CloudResourceManagement, используяgetApplicationDefault
.
Однако если я сделаю gcloud beta auth application-default login
который запускает поток аутентификации в браузере и аутентифицируется с пользователем, который является владельцем организации, это работает, и перечисляет все проекты, которые у меня есть.
Может ли кто-нибудь объяснить мне, что мне делать, чтобы сохранить правильные учетные данные, которые будут подражать владельцу пользователя? Я уже установил учетную запись службы с ролью владельца, которая теоретически дает практически доступ ко всем ресурсам, и все равно не повезло.
2 ответа
Для включения в список проектов вашей организации вам потребуется разрешение. resourcemanager.projects.get
. Дополнительную информацию можно найти по этой ссылке. Учетная запись службы может иметь роль владельца 1 проекта, и этого недостаточно, чтобы перечислить их все.
Альтернативным решением является предоставление учетной записи cloudasset.assets.searchAllResources
разрешение на уровне организации с использованием одной из следующих ролей:
- роли /cloudasset.viewer
- роли /cloudasset.owner
- роли / зритель
- роли / редактор
- роли / владелец
С этим разрешением вы можете перечислить все проекты в организации 456:
gcloud beta asset search-all-resources \
--asset-types="cloudresourcemanager.googleapis.com/Project"
--scope=organizations/456
Документация: https://cloud.google.com/asset-inventory/docs/searching-resources
Связанное сообщение: Как находить, перечислять или искать ресурсы в сервисах (API) и проектах в Google Cloud Platform?