def lambda_handler()

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)