使用Go客户端cloudresourcemanager库列GCP文件夹报错400求助
问题原因
你触发报错的根本原因是调用Cloud Resource Manager v2的文件夹列表接口时,没有指定必填的Parent参数,该接口不支持无父资源条件的全局查询。
修复方案
- 先确定你要查询的父资源标识,GCP文件夹属于组织层级资源,父资源仅支持两种格式:
- 查询整个组织下的一级文件夹:格式为
organizations/你的组织数字ID - 查询某个父文件夹下的子文件夹:格式为
folders/父文件夹数字ID
注意:不能直接传入GCP项目ID作为父资源,项目本身是文件夹/组织层级下的子资源,不能作为文件夹的父级查询条件,你配置的
GOOGLE_CLOUD_PROJECT环境变量对这个接口无效。 - 查询整个组织下的一级文件夹:格式为
- 修改代码中构造列表请求的逻辑,补充Parent参数设置:
// 替换括号内的内容为你自己的父资源标识 foldersListCall := foldersService.List().Parent("organizations/123456789012")
- 额外权限校验
确认你的凭据对应的身份,已经在父资源层级被授予了resourcemanager.folders.list权限,一般分配「Folder Viewer」或「Organization Viewer」角色即可满足要求。你可以先执行gcloud命令验证权限是否正常:
gcloud resource-manager folders list --organization=你的组织数字ID
如果命令能正常返回文件夹列表,再运行修改后的代码即可。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

