You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python通过GCP API查询指定区域的未挂载磁盘?

如何用Python调用GCP API查询指定区域的孤立磁盘

前置准备

  • 安装GCP Compute客户端库:
    pip install google-cloud-compute
    
  • 完成身份认证:本地开发可通过gcloud auth application-default login完成;生产环境可设置服务账号密钥环境变量GOOGLE_APPLICATION_CREDENTIALS。

实现步骤与代码示例

核心思路:先获取目标区域的所有磁盘,再提取该区域所有实例挂载的磁盘ID,最后对比筛选出未被挂载的孤立磁盘。

import google.cloud.compute_v1 as compute_v1

def find_unattached_disks(project_id: str, zone: str):
    # 初始化磁盘和实例客户端
    disks_client = compute_v1.DisksClient()
    instances_client = compute_v1.InstancesClient()

    # 1. 获取指定区域的所有磁盘
    all_disks = list(disks_client.list(project=project_id, zone=zone))

    # 2. 收集所有实例挂载的磁盘ID
    attached_disk_ids = set()
    for instance in instances_client.list(project=project_id, zone=zone):
        for disk in instance.disks:
            # 从磁盘资源URL中提取ID(URL最后一段)
            disk_id = disk.source.split("/")[-1]
            attached_disk_ids.add(disk_id)

    # 3. 筛选出未被挂载的磁盘
    unattached_disks = [disk for disk in all_disks if disk.id not in attached_disk_ids]

    # 输出结果
    print(f"区域 {zone} 中的孤立磁盘:")
    for disk in unattached_disks:
        print(f"- 名称:{disk.name},ID:{disk.id},大小:{disk.size_gb}GB")

    return unattached_disks

# 替换为你的项目ID和目标区域
PROJECT_ID = "your-project-id"
ZONE = "us-central1-a"

find_unattached_disks(PROJECT_ID, ZONE)

关键说明

  • 磁盘ID匹配:实例挂载的磁盘信息中,disk.source是完整资源URL,拆分后取最后一段即可得到磁盘ID,与磁盘对象的id字段完全匹配。
  • 去重处理:用集合存储已挂载磁盘ID,避免同一磁盘被多个实例挂载时重复统计。
  • 扩展支持:如果需要跨区域查询,可循环遍历目标区域列表,重复调用上述函数即可。

内容的提问来源于stack exchange,提问作者Orsan Awawdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:04:57