【问题标题】:How to list all projects inside GCP organization using Resource Manager API?如何使用资源管理器 API 列出 GCP 组织内的所有项目?
【发布时间】:2020-10-04 22:02:56
【问题描述】:

我正在尝试使用资源管理器 API 中的 projects.list 方法列出我在 GCP 中拥有的所有项目,但我无法确定要使用的访问令牌。

假设我有三个项目:

  • My Project 44572
  • Testing
  • My First Project

当我使用projects.list 方法时,它应该给我这样的输出:

{
  "projects": [
    {
      "name": "My Project 44572", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:38:04.712Z"
    }, 
    {
      "name": "Testing ", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:35:59.480Z"
    }, 
    {
      "name": "My First Project", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:33:23.859Z"
    }
  ]
}

但是,如果我使用的是通过My Project 44572 服务帐户获得的访问令牌,我将得到以下输出:

{
  "projects": [
    {
      "name": "My Project 44572", 
      "parent": {
        "type": "organization", 
        "id": "ORG_ID"
      }, 
      "projectId": "PROJECT_ID", 
      "projectNumber": "PROJECT_NUMBER", 
      "lifecycleState": "ACTIVE", 
      "createTime": "2020-06-15T08:38:04.712Z"
    }
]
}

那么,我应该使用什么访问令牌才能获得我组织下的所有项目?

【问题讨论】:

  • 我不明白您的问题:您组织的项目与 Google Cloud Storage 之间的关系是什么。一个桶只属于一个项目,而账户(属于另一个项目的服务帐户)可以访问该桶。那么,你能澄清你想要什么吗?也许有一个你所期望的虚拟例子?
  • 我同意纪尧姆的观点。我不了解您的问题中的云存储使用情况。请详细说明一下,以便我们为您提供帮助。
  • @guillaumeblaquiere 我现在用一个例子更新了这个问题。请立即检查并告诉我是否有帮助
  • @OqueliA.Martinez 请立即查看
  • 您执行的是哪个请求?你有一段代码或 gcloud 命令吗?您有组织 ID 或文件夹 ID 吗?

标签: api http google-cloud-platform access-token google-cloud-resource-manager


【解决方案1】:

我通过在组织级别分配“我的项目 44572”所有者角色的服务帐户解决了这个问题,现在当我使用此服务帐户生成的访问令牌时,它会列出我组织中的所有项目

【讨论】:

    【解决方案2】:

    projects.list 方法需要resourcemanager.projects.get 权限。您可以授予帐户任何包含组织级别权限的角色以实现您的目标,例如 -

    • 角色/查看者
    • 角色/编辑
    • 角色/所有者

    或者,您可以使用需要cloudasset.assets.searchAllResources 权限的resources.searchAll 方法。您可以在组织级别授予帐户具有此权限的任何角色:

    • roles/cloudasset.viewer
    • roles/cloudasset.owner
    • 角色/查看者
    • 角色/编辑
    • 角色/所有者

    列出组织内的所有项目456:

    gcloud asset search-all-resources \
    --asset-types="cloudresourcemanager.googleapis.com/Project"
    --scope=organizations/456
    

    文档:

    相关帖子:

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 2022-01-09
      • 2018-01-25
      • 1970-01-01
      • 2021-05-03
      • 2021-06-09
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多