2014-07-22 57 views
0

我正在使用AWS並使用boto(「到Amazon Web Services的Python接口」)拉取快照。我正在使用conn.get_all_snapshots()提取所有快照,但我只想檢索必要的數據。我正在使用日曆來查看快照,因此如果我只能在當前查看的月份內提取快照,這將非常有幫助。AWS boto在時間段內獲取快照

是否有限制(可能是一個過濾器)我可以把conn.get_all_snapshots()只檢索月內的快照?

這裏有博託文檔如果必要的話:http://boto.readthedocs.org/en/latest/ref/ec2.html

回答

0

我不知道有什麼方法可以做到這一點。 EC2 API允許您根據快照ID或各種過濾器(如statusprogress)過濾結果。甚至有一個create-time的過濾器,但不幸的是,沒有辦法指定一個時間範圍,並讓它返回之間的所有內容。在篩選器查詢中無法使用<>運算符。

+0

這看起來非常必要,尤其是因爲我不想在後端保存數千個快照。有沒有解決方法? – user3822146

+1

那麼,您可以將時間戳和快照ID始終存儲在DynamoDB或其他數據庫中,並查詢它以查找要檢索的快照ID。 – garnaat

+0

好的。認爲我會迴避。無論如何感謝您的答覆。順便說一句boto岩石以其他方式。 – user3822146

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