2014-07-22 5 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

: 필요한 경우 여기

는 BOTO 문서입니다. EC2 API를 사용하면 스냅 샷 ID 또는 status 또는 progress과 같은 다양한 필터를 기반으로 결과를 필터링 할 수 있습니다. create-time에 대한 필터조차도 있지만 불행히도 시간 범위를 지정하고 그 사이의 모든 것을 반환하는 방법은 없습니다. 그리고 필터 쿼리에 < 또는 > 연산자를 사용할 방법이 없습니다.

+0

백엔드에서 수천 개의 스냅 샷을 저장하고 싶지 않기 때문에 매우 필요합니다. 어떤 해결책이 있습니까? – user3822146

+1

글쎄, 항상 타임 스탬프와 스냅 샷 ID를 DynamoDB 또는 다른 데이터베이스에 저장하고 검색 할 스냅 샷 ID를 찾기 위해 쿼리 할 수 ​​있습니다. – garnaat

+0

확인. 나는 그것에서 멀리 부끄러워 할 것이라는 점을 생각하십시오. 어쨌든 응답 주셔서 감사합니다. BTW 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 . (자세한 내용은 https://stackoverflow.com/a/3908349/1293152을 참조하십시오.)