【问题标题】:How do I get the organization ID of my current project in Google Cloud Platform?如何在 Google Cloud Platform 中获取当前项目的组织 ID?
【发布时间】:2020-01-15 10:51:17
【问题描述】:

我想知道我在 GCP 中当前项目的组织 ID。

gcloud projects describe PROJECT_ID 将显示可以是组织的parent,但如果父级是folder,则不会出现组织 ID。

我可以使用gcloud resource-manager folders describe FOLDER_ID 递归文件夹的父层次结构,但这很麻烦。如果我没有组织级别的权限也是不可能的。

但我确实可以访问组织 ID:gcloud organizations list 显示了几个组织,但没有将它们映射到项目。

我怎样才能做到这一点?

【问题讨论】:

标签: google-cloud-platform gcloud google-cloud-resource-manager


【解决方案1】:

如果我们阅读here,我们会发现您的组织是您当前项目的祖先树的根。

我们还发现可以调用一个 API 来从给定项目向上检索祖先链。这意味着我们可以使用该 API 检索您项目的组织 ID。

API 记录在 here

它具有以下高级 REST 格式:

POST https://cloudresourcemanager.googleapis.com/v1/projects/{projectId}:getAncestry

一个可能的命令可能是:

curl -X POST -H "Authorization: Bearer \"$(gcloud auth application-default print-access-token)\"" \
          -H "Content-Type: application/json; charset=utf-8" \
             https://cloudresourcemanager.googleapis.com/v1/projects/<MY_PROJECT>:getAncestry

【讨论】:

  • 行得通!但请解释如何进行直接 REST 调用。我可以使用我的本地 gcloud 环境而不生成凭据 JSON 来执行此操作吗? (使用凭证 JSON 我会做 GOOGLE_APPLICATION_CREDENTIALS=&lt;JSON credentials file path&gt; 后跟 curl -X POST -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudresourcemanager.googleapis.com/v1/projects/&lt;MY PROJECT&gt;:getAncestry
  • 您不是刚刚回答了自己的问题,即如何使用“curl”命令对您的帖子进行 REST 调用吗?
  • 是的。在官方答案中有可运行的命令会很好。另外,我如何使用 gcloud 身份验证用户(在 gcloud init 期间设置)而不是使用服务用户 json 凭据文件来执行此操作?
  • 使用gcloud auth print-access-token作为认证命令可以避免下载单独的JSON文件
  • 现在有一个 gcloud 命令使用这个 API:ORG_ID="$(gcloud projects get-ancestors $PROJECT_ID | grep organization | cut -f1 -d' ')"
猜你喜欢
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多