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:
и ̀ удаление снимка с идентификатором: ...`тогда я получаю сообщение об ошибке
An error occurred (MissingParameter) when calling the DeleteSnapshot operation: The request must contain the parameter id
Что я не понимаю, почему сценарий входит в другое условие, даже если переменная all_snaps пуста и не возвращает никакого снимка?
1 ответ
Решение
describe_snapshots()
не возвращается None
когда нет совпадения для фильтров. Ответ здесь будет выглядеть так {'Snapshots': []}
,
Вы должны изменить if
с проверкой длины списка под Snapshots
введите ответный дикт.
if not len(all_snaps['Snapshots']):
sys.exit(1)