def lambda_handler()

in lambda/delete_old_snapshots_dest_rds/lambda_function.py [0:0]


def lambda_handler(event, context):
    delete_pending = 0
    # Search for all snapshots
    client = boto3.client('rds', region_name=DEST_REGION)
    response = paginate_api_call(client, 'describe_db_snapshots', 'DBSnapshots')

    # Filter out the ones not created automatically or with other methods
    filtered_list = get_own_snapshots_dest(PATTERN, response)

    for snapshot in filtered_list.keys():

        creation_date = get_timestamp(snapshot, filtered_list)

        if creation_date:
            snapshot_arn = filtered_list[snapshot]['Arn']
            response_tags = client.list_tags_for_resource(
                ResourceName=snapshot_arn)

            if search_tag_copied(response_tags):
                difference = datetime.now() - creation_date
                days_difference = difference.total_seconds() / 3600 / 24

                # if we are past RETENTION_DAYS
                if days_difference > RETENTION_DAYS:
                    # delete it
                    logger.info('Deleting %s. %s days old' %
                                (snapshot, days_difference))

                    try:
                        client.delete_db_snapshot(
                            DBSnapshotIdentifier=snapshot)

                    except Exception as e:
                        delete_pending += 1
                        logger.info('Could not delete %s (%s)' % (snapshot, e))

                else:
                    logger.info('Not deleting %s. Only %s days old' %
                                (snapshot, days_difference))

            else:
                logger.info(
                    'Not deleting %s. Did not find correct tag' % snapshot)

    if delete_pending > 0:
        log_message = 'Snapshots pending delete: %s' % delete_pending
        logger.error(log_message)
        raise SnapshotToolException(log_message)