0

実行中のすべてのインスタンスでebsスナップショットをチェックするためのpythonスクリプトを作成しています...

rsv = self.botoEC2.get_all_instances()
for r in rsv:
  ins = r.instances[0]
  blockDevice = self.getInstanceAttribute(ins,"blockDeviceMapping")
  print blockDevice

def getInstanceAttribute(self,instance,attribute):
    return instance.get_attribute(attribute)

出力:

{u'blockDeviceMapping': {u'/dev/sda1': <boto.ec2.blockdevicemapping.BlockDeviceType object at 0x10d5faed0>}}

私はボトが初めてです。私は正しい道を進んでいますか?

最初に取得してからblockDeviceMappingボリューム関数を呼び出す必要がありますか?

既存のスナップショットを確認できるように、実際のボリューム ID を取得するにはどうすればよいですか?

4

1 に答える 1

3

実行中のすべてのインスタンスをループしてから、それらのインスタンスに接続されているすべての EBS ボリュームをループしたいようです。そうですか?もしそうなら、私は次のようなことをします:

import boto

ec2 = boto.connect_ec2()
reservations = ec2.get_all_instances(filters={'instance-state-name': 'running'})
volumes = []
for r in reservations:
    for i in r.instances:
        volumes.extend(ec2.get_all_volumes(filters={'attachment.instance-id': i.id}))

その時点で、ボリュームには、実行中の EC2 インスタンスにアタッチされているすべてのボリューム オブジェクトのリストが含まれます。

于 2012-09-20T03:08:02.533 に答える