使用 gcloud 列出给定 GCP 项目下的所有活动资源

bsa*_*sam 19 google-cloud-platform gcloud

是否可以通过 gcloud cli 列出给定 GCP 项目下的所有活动资源?

Cir*_*rcy 16

您可以使用 search-all-resources 来搜索给定组织、文件夹或项目的跨服务(或 API)和项目的所有资源。

要搜索编号为 123 的项目中的所有资源:

$ gcloud asset search-all-resources --scope=projects/123
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅另一篇文章: 如何在 Google Cloud Platform 中跨服务 (API) 和项目查找、列出或搜索资源?

  • “gcloud alpha 资源列表”已弃用。 (3认同)

Daz*_*kin 5

IIUC 没有用于“项目中的事物”的通用类型,因此您需要专门枚举所有类型(您感兴趣的)。

此外,某些资源(例如密钥)由项目拥有的服务帐户拥有。

for PROJECT in $(\
  gcloud projects list \
  --format="value(projectId)")
do
  echo "Project: ${PROJECT}"
  echo "Services"
  gcloud services list --project=${PROJECT}
  echo "Kubernetes Clusters"
  gcloud container clusters list --project=${PROJECT}
  echo "Compute Engine instances"
  gcloud compute instances list --project=${PROJECT}
  echo "Service Accounts"
  for ACCOUNT in $(\
    gcloud iam service-accounts list \
    --project=${PROJECT} \
    --format="value(email)")
  do
    echo "Service Account keys: ${ACCOUNT}"
    gcloud iam service-accounts keys list --iam-account=${ACCOUNT} --project=${PROJECT}
  done
done
Run Code Online (Sandbox Code Playgroud)

但是,这种方法面临各种挑战:

  • 某些枚举可能需要更多详细信息(例如区域|区域)
  • 您需要详尽无遗(它不会列出您不要求的内容)
  • 它很快就会嵌套|混乱
  • 如果未启用某些服务会提示(例如 Compute Engine)

NB

  • 您可以应用--filter=...到上述每个命令
  • 您可以将整个循环包装成一个枚举gcloud auth list帐户


小智 5

我认为这个命令会做到这一点,但似乎只是在一个封闭的 alpha 中,所以我认为在不久的将来会做...

gcloud alpha 资源列表

https://cloud.google.com/sdk/gcloud/reference/alpha/resources/list

  • 死链接;得到 404 (5认同)