如何通过Resource Manager v3以编程方式列出谷歌账号项目?
简介
谷歌Resource Manager API提供了project.list方法,在V1版本中只需执行:
GET https://cloudresourcemanager.googleapis.com/v1/projects
完成身份验证后,就能获取关联账号的所有项目列表。归属组织的账号返回结果里会包含parent节点:
"parent": { "type": "organization", "id": "123456789012" }
未归属任何组织的账号则不会有这个parent节点。
但在最新的V3版本中,project.list方法强制要求显式指定parent参数,否则会返回403 Forbidden和PERMISSION_DENIED错误,使用起来非常不方便。
技术问题解答
1. V3版本中是否有适用于必填parent参数的通配符“根”值?
没有官方支持的通配符“根”值可以直接替代parent参数。V3版本的project.list设计就是要求明确指定父资源(组织、文件夹或账单账户),无法通过通配符一次性拉取所有层级的项目。
2. 非组织账号应传入什么内容作为parent参数?
非组织账号的项目父资源是账单账户,需要传入格式为billingAccounts/{BILLING_ACCOUNT_ID}的参数值。比如账单账户ID是012345-ABCDEF-678901,就传入billingAccounts/012345-ABCDEF-678901。
3. 非组织账号如何获取自身的“根”值?
可以通过调用billingAccounts.list API获取账单账户ID,执行请求:
GET https://cloudbilling.googleapis.com/v1/billingAccounts
该接口会返回当前身份有权访问的所有账单账户,非组织账号的项目通常关联其中一个账单账户,将其ID按billingAccounts/{ID}格式拼接后即可作为parent参数传入project.list。
补充说明
归属组织的账号可以通过调用以下API获取自身所属组织:
GET https://cloudresourcemanager.googleapis.com/v3/organizations:search
内容的提问来源于stack exchange,提问作者sharpener
相关产品推荐
相关产品推荐

