in lambda/delete_old_snapshots_aurora/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_cluster_snapshots', 'DBClusterSnapshots')
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_cluster_snapshot(
DBClusterSnapshotIdentifier=snapshot)
except Exception as e:
pending_delete += 1
logger.info(e)
logger.info('Could not delete %s ' % snapshot)
else:
# Not older than RETENTION_DAYS
logger.debug('%s created less than %s days. Not deleting' % (snapshot, RETENTION_DAYS))
else:
# Did not have a timestamp
logger.debug('Not deleting %s. Could not find a timestamp in the name' % snapshot)
if pending_delete > 0:
message = 'Snapshots pending delete: %s' % pending_delete
logger.error(message)
raise SnapshotToolException(message)