我正在寻找一种以编程方式列出组织内的 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
我也设置但没有运气的。我使用创建 CloudResourceManagement api 对象getApplicationDefault
。
但是,如果我这样做gcloud beta auth application-default login
会触发浏览器中的身份验证流程并与作为组织所有者的用户进行身份验证,这将起作用并列出我拥有的所有项目。
任何人都可以向我解释我应该怎么做才能存储一个可以模仿他的用户所有者的适当凭证?我已经将服务帐户设置为 Owner 角色,理论上它实际上可以访问所有资源,但仍然没有运气。