AWS boto在时间段内获取快照

时间:2014-07-22 15:41:18

标签: python amazon-web-services amazon-ec2 boto snapshot

我正在使用AWS并使用boto(“Amazon Web Services的Python接口”)提取快照。我正在使用conn.get_all_snapshots()提取所有快照,但我只想检索必要的数据。我正在使用日历来查看快照,因此如果我只能在我正在查看的当前月份内提取快照,那将非常有用。

是否有限制(可能是过滤器)我可以放在conn.get_all_snapshots()上只检索一个月内的快照?

如有必要,以下是boto文档:http://boto.readthedocs.org/en/latest/ref/ec2.html

2 个答案:

答案 0 :(得分:0)

我不知道有什么方法可以做到这一点。 EC2 API允许您根据快照ID或statusprogress等各种过滤器过滤结果。甚至还有create-time的过滤器,但遗憾的是,无法指定一系列时间并让它返回介于两者之间的所有内容。并且无法在过滤器查询中使用<>运算符。

答案 1 :(得分:0)

使用快照的start_time字段(字符串,因此需要解析):

import datetime

# Fetch all snaps
snaps = conn.get_all_snapshots()
# Get UTC of 30-days ago
cutoff = datetime.datetime.utcnow() - datetime.timedelta(days=30)
# datetime parsing format "2015-09-07T20:12:08.000Z"
DATEFORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'
# filter older
old_snaps = [s for s in snaps \
             if datetime.datetime.strptime(s.start_time, DATEFORMAT) < cutoff]
# filter newer
new_snaps = [s for s in snaps \
             if datetime.datetime.strptime(s.start_time, DATEFORMAT) >= cutoff]

old_snaps将包含本月之前的内容,new_snaps将包含本月的内容。 (我觉得你想要删除旧的快照,这就是为什么我要包含old_snaps行。)

我使用上面的datetime.strptime()是因为它内置了,但是如果你安装了dateutil,它会更健壮。 (详见:https://stackoverflow.com/a/3908349/1293152