如何在Python中通过域名获取GCP组织ID
通过Python获取GCP组织ID(根据显示名称/域名)
依赖准备
首先安装GCP资源管理的Python客户端库:
pip install google-cloud-resource-manager
认证方式
确保你的Python环境已完成GCP认证,两种常用方式:
- 本地开发:执行
gcloud auth application-default login完成认证 - 生产环境:设置环境变量
GOOGLE_APPLICATION_CREDENTIALS指向服务账号JSON密钥文件
代码实现
下面的代码会遍历你有权访问的所有GCP组织,根据传入的显示名称或域名匹配并返回组织ID:
from google.cloud import resourcemanager_v3 def get_org_id(org_identifier: str, by_domain: bool = False) -> str | None: """ 根据组织显示名称或域名获取GCP组织ID :param org_identifier: 组织显示名称或域名 :param by_domain: True表示按域名匹配,False按显示名称匹配 :return: 组织ID(格式如organizations/123456789),无匹配则返回None """ client = resourcemanager_v3.OrganizationsClient() # 遍历所有有权限访问的组织 for org in client.list_organizations(): if by_domain: # 匹配域名(org.domains属性为列表,匹配任意一个即可) if org_identifier in org.domains: return org.name else: # 匹配显示名称 if org.display_name == org_identifier: return org.name return None # 示例调用 if __name__ == "__main__": # 按显示名称查找 print(get_org_id("我的GCP组织")) # 按域名查找 print(get_org_id("example.com", by_domain=True))
权限说明
执行代码的账号需要拥有resourcemanager.organizations.list权限,通常绑定Organization Viewer(roles/resourcemanager.organizationViewer)角色即可。
注意事项
- 如果账号有权访问多个组织,代码会返回第一个匹配的结果
- 若未找到匹配组织,函数返回
None,可根据业务需求添加异常抛出逻辑
内容的提问来源于stack exchange,提问作者intotecho
相关产品推荐
相关产品推荐

