python boto问题,显示每个实例的最新快照

python boto问题,显示每个实例的最新快照,python,linux,amazon-web-services,boto,Python,Linux,Amazon Web Services,Boto,我试图以一种表格形式打印实例名称、卷id、实例id、实例专用IP、快照开始时间快照id 代码:- #!/usr/bin/python import os import boto.ec2 import time import datetime conn = boto.ec2.connect_to_region("eu-west-1") reservations = conn.get_all_instances() tags = conn.get_all_tags() snapshots = co

我试图以一种表格形式打印实例名称、卷id、实例id、实例专用IP、快照开始时间快照id

代码:-

#!/usr/bin/python
import os
import boto.ec2
import time
import datetime

conn = boto.ec2.connect_to_region("eu-west-1")
reservations = conn.get_all_instances()
tags = conn.get_all_tags()
snapshots = conn.get_all_snapshots(owner="self")
instances = [i for r in reservations for i in r.instances]

import datetime
today = datetime.datetime.today()
one_day = datetime.timedelta(days=1)
yesterday = today - one_day

from datetime import datetime

for inst in instances:
    for snap in snapshots:
            start_time = datetime.strptime (snap.start_time.split('.')[0],'%Y-%m-%dT%H:%M:%S')
            if start_time > yesterday and 'Name' in inst.tags:
                    print "%s (%s) (%s) (%s) [%s] " % (inst.tags['Name'], start_time, snap.volume_id
它一次又一次地在所有实例中循环。例如->我有17个实例,然后它在所有实例中循环17*17次并显示结果


有什么建议吗

看起来您的快照不是来自实例,所以您可以使用类似的东西

for inst, snap in zip(instances, snapshots):
    do stuff

这样,它将同时循环通过这两个实例,而不是每个实例的所有快照

您的算法似乎有缺陷。您是否可以更新问题,提供有关如何调试和解决问题的更多详细信息?快照与实例无关(它们取自卷id),无需额外工作,例如标记。因此,您需要确保快照具有一些标记,允许您将其与实例id(例如名称或id)关联,然后仅显示满足该条件的快照(例如inst.tags['name']==snapshot.tags['name'])。