def lambda_handler()

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)