in lambda/delete_old_snapshots_rds/lambda_function.py [0:0]
def lambda_handler(event, context):
pending_delete = 0
client = boto3.client('rds', region_name=REGION)
response = paginate_api_call(client, 'describe_db_snapshots', 'DBSnapshots')
filtered_list = get_own_snapshots_source(PATTERN, response)
for snapshot in filtered_list.keys():
creation_date = get_timestamp(snapshot, filtered_list)
if creation_date:
difference = datetime.now() - creation_date
days_difference = difference.total_seconds() / 3600 / 24
logger.debug('%s created %s days ago' %
(snapshot, days_difference))
# if we are past RETENTION_DAYS
if days_difference > RETENTION_DAYS:
# delete it
logger.info('Deleting %s' % snapshot)
try:
client.delete_db_snapshot(
DBSnapshotIdentifier=snapshot)
except Exception as e:
pending_delete += 1
logger.info('Could not delete %s (%s)' % (snapshot, e))
else:
logger.info('Not deleting %s. Created only %s' % (snapshot, days_difference))
if pending_delete > 0:
message = 'Snapshots pending delete: %s' % pending_delete
logger.error(message)
raise SnapshotToolException(message)