2017-01-23 44 views
0

我想看看上周创建的快照,并通过使用此代码自动删除它时:MissingParameter调用DeleteSnapshot操作

last_week = today - timedelta(days=7) 
logger.info('Looking for snapshots of : {0}'.format(str(last_week))) 
tag_value_last = 'snap-hebdo-'+str(last_week) 
all_snaps = ec2client.describe_snapshots(Filters=[ {'Name': 'tag-value','Values': [tag_value_last]}],) 
if all_snaps == None: 
    logger.error('No snapshot found with the tag : {0}'.format(tag_value_last)) 
    sys.exit(1) 
else: 
    snapshotId_last ='' 
    for i in all_snaps['Snapshots']: 
     snapshotId_last = i['SnapshotId'] 
    logger.info('Old snapshot of {0} found with ID: {1}'.format(str(last_week),snapshotId_last)) 
    logger.info('Deleting the snapshot with ID : {0} ...'.format(snapshotId_last)) 
    ec2client.delete_snapshot(SnapshotId=snapshotId_last) 
    logger.info('Done.') 

我的问题是,该记录器获取消息Old snapshot of 2017-01-16 found with ID: 和删除快照与ID:...`然后我得到的错误

An error occurred (MissingParameter) when calling the DeleteSnapshot operation: The request must contain the parameter id 

我不明白为什么脚本进入条件的其他甚至变量all_snaps是空的,它不返回任何快照?

回答

0

当过滤器不匹配时,describe_snapshots()不返回None。这里的回复看起来像{'Snapshots': []}

您应该修改if检查响应字典中Snapshots键下的列表长度。

if not len(all_snaps['Snapshots']): 
    sys.exit(1)