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

时间:2015-04-07 16:59:04

标签: python amazon-ec2 boto volumes mounted-volumes

我使用的是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映射的内容。

2 个答案:

答案 0 :(得分:1)

我认为您希望实例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文档中找到更多相关信息。

答案 1 :(得分:0)

使用instance-:

获取所有音量标识
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