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 に答える