使用boto将AWS实例/卷映射到快照

时间:2012-09-19 21:07:03

标签: python amazon-web-services boto

我正在编写一个 python 脚本来检查我所有正在运行的实例 ebs 快照......

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>}}

我是boto的新手。我在正确的道路上吗?

我是否需要先获取blockDeviceMapping,然后调用音量函数?

如何获取实际的卷ID,以便检查现有快照?

1 个答案:

答案 0 :(得分: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实例的所有Volume对象的列表。