我正在使用AWS并使用boto(“Amazon Web Services的Python接口”)提取快照。我正在使用conn.get_all_snapshots()
提取所有快照,但我只想检索必要的数据。我正在使用日历来查看快照,因此如果我只能在我正在查看的当前月份内提取快照,那将非常有用。
是否有限制(可能是过滤器)我可以放在conn.get_all_snapshots()
上只检索一个月内的快照?
如有必要,以下是boto文档:http://boto.readthedocs.org/en/latest/ref/ec2.html
答案 0 :(得分:0)
我不知道有什么方法可以做到这一点。 EC2 API允许您根据快照ID或status
或progress
等各种过滤器过滤结果。甚至还有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)