Python Boto 列出附加到实例的存储设备

Python Boto List Storage Devices Attached to Instance

我正在使用 Python 2.7 和 Boto.latest。

我正在创建一个动态清单脚本,我想列出连接到每个实例的存储设备

示例:

ID: i-3rblah
Storage:
-  /dev/sda 
- /dev/sdb
- /dev/sdc

尝试过:

for reservation in reservations:
  for i in reservation.instances:
    volumes = conn.get_all_volumes(filters={'attachment.instance-id': i.id})
    print i.__dict__
    print volumes.__dict__ 

所以我有一些卷信息,但没有 VolumeID 映射到的信息。

要获取所有卷都附加了一个实例-:

inst=conn.get_all_instances()

    for reservation in inst:
      for i in reservation.instances:
        volumes = conn.get_all_volumes(filters={'attachment.instance-id': i.id})
        print "This instance:",i.id," is attached to ", volumes

我想你想要实例的 BlockDeviceMapping。根据你上面的例子,下面应该找到 block_device_mapping 作为字典的实例。字典中的每个键都是一个设备名称,值是一个 BlockDeviceType 对象,其中包含有关与该设备名称关联的块设备的信息。

for reservation in reservations:
    for instance in reservation.instances:
        bdm = instance.block_device_mapping
        for device in bdm:
            print('Device: {}'.format(device)
            bdt = bdm[device]
            print('\tVolumeID: {}'.format(bdt.volume_id))
            print('\tVolume Status: {}'.format(bd.volume_status))

这应该打印如下内容:

Device: /dev/sda1
    VolumeID: vol-1d011806
    Volume Size: attached

BlockDeviceType 对象中还有其他字段。您应该能够在 Boto 文档中找到更多相关信息。