0

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

4

2 回答 2

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 文档中找到更多相关信息。

于 2015-04-07T18:14:40.197 回答
0

要使所有卷 id 都附加一个实例-:

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
于 2015-04-07T17:22:10.797 回答