如何在 GCP 中列出项目的最多计算实例信息?

How to list the most compute instances' info for a project in GCP?

我正在尝试列出与我的帐户关联的所有项目下存在的所有 VM,包括它们的 OS 和我能找到的任何其他标签。我已经有了项目列表,所以我正在使用的是:

 for project in project_df["project_id"]:
    subprocess.run(["gcloud config set project {}".format(project)], shell=True)
    cp = subprocess.run(["gcloud compute instances os-inventory list-instances"], shell=True)
    print(cp)

这确实有效,但我得到的唯一标签是:

NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS

如何获取虚拟机的 OS?可能还有更多标签?我尝试使用: GET https://compute.googleapis.com/compute/v1/projects/{project}/aggregated/instances,没有成功,因为我无法使 requestsurllib 使用它。

我是否缺少来自 sdk 或其他 gcloud 命令的任何其他 python 库?

谢谢

您可以使用 --format flag 转换输出。

有无限可能,包括:

gcloud compute instances list \
--project=${PROJECT} \
--format="value(name,status,zone,id,kind)"

gcloud compute instances list \
--project=${PROJECT} \
--format="json"

gcloud compute instances list \
--project=${PROJECT} \
--format="yaml"

但是,您最好使用 Compute API 而不是使用 Python 到 运行 中的 shell 命令。

Compute API 是 gcloud CLI 的基础,直接使用它可以让您直接使用 Python 数据类型配置它并接收结果.

有关基本示例,请参阅 Google 文档中的 Python example

根据@DazWilkin 的回答,对我的案例有用的是:

我 运行 gcloud compute instances list --format=flattened 向我展示了许多(如果不是全部的话)可能的标签。然后我找到了那些当你 运行 gcloud compute instances list 和 运行 时没有出现的,得到我想要的:

gcloud compute instances list --format="csv(name, zone, labels.compute_machine_type, canIpForward,  labels.os, creationTimestamp, status)" > compute_info.csv

这样我也避免了使用计算API。