You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用GCP Resource Manager无法列出组织文件夹下项目

问题根因

GCP Resource Manager v3 的list_projects接口不会递归遍历子节点,当你传入parent='organizations/12345'时,接口仅会返回直接挂载在组织根节点下的项目。所有存放在文件夹(含多层嵌套文件夹)下的项目,父级资源是对应文件夹而非组织根节点,因此不会被该请求返回,该问题和服务账号权限无关,你当前配置的Organization Administrator、Folder Viewer角色已经满足资源查询的权限要求。

解决方法

优先使用search_projects接口实现需求,该接口默认会递归检索指定作用域下所有层级的项目,无需手动遍历文件夹结构,代码示例如下:

from google.cloud import resourcemanager_v3
from google.oauth2 import service_account

def list_all_projects():
    proj_list = []
    credentials = service_account.Credentials.from_service_account_file('../key.json')
    resourcemanager_v3_projects_client = resourcemanager_v3.ProjectsClient(credentials=credentials)
    
    # 用search_projects递归检索组织下所有项目
    search_request = resourcemanager_v3.SearchProjectsRequest(
        query="parent:organizations/12345",
        show_deleted=False
    )
    page_result = resourcemanager_v3_projects_client.search_projects(request=search_request)

    for response in page_result:
        proj_list.append(response.project_id)
    return proj_list

如果因业务场景必须使用list_projects接口,需要额外实现递归逻辑:

  • 先调用Resource Manager的文件夹相关接口,递归列出组织下所有层级的文件夹
  • 分别以组织根节点、每个文件夹的资源名作为parent参数调用list_projects
  • 汇总所有返回结果得到组织下全量项目列表

注意:search_projects接口返回结果与list_projects字段结构完全一致,不会出现字段缺失问题,是官方推荐的跨层级查询项目的方式。

内容的提问来源于stack exchange,提问作者Atharva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 18:06:07