AWS boto 获取时间范围内的快照
我正在使用AWS,并通过boto(这是一个用来和亚马逊网络服务互动的Python库)来获取快照。我用conn.get_all_snapshots()
这个方法来获取所有的快照,但我只想要必要的数据。我正在用日历来查看这些快照,所以如果能只获取当前月份的快照,那就太好了。
请问有没有什么限制(可能是过滤条件)可以加在conn.get_all_snapshots()
上,让我只获取这个月的快照呢?
如果需要的话,这里有boto的文档链接:http://boto.readthedocs.org/en/latest/ref/ec2.html
2 个回答
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)
0
我不知道有什么办法可以做到这一点。EC2的API允许你根据快照ID或者一些其他条件来筛选结果,比如status
(状态)或者progress
(进度)。甚至还有一个create-time
(创建时间)的筛选条件,但很遗憾的是,无法指定一个时间范围来返回这个范围内的所有内容。而且在筛选查询中也不能使用<
(小于)或>
(大于)这样的运算符。