def create_filter()

in next_steps/operations/ml_ops/personalize-step-functions/lambdas/create-filters/filters.py [0:0]


def create_filter(dataset_group_arn, filter_expression, filter_name):

    filterARN = ARN.format(
        region=environ['AWS_REGION'],
        account=LOADER.account_id,
        filter_name=filter_name
    )

    try:
        status = LOADER.personalize_cli.describe_filter(
            filterArn=filterARN
        )['filter']['status']

    except LOADER.personalize_cli.exceptions.ResourceNotFoundException:
        LOADER.logger.info(
            'Filter not found! Will follow to create a new filter.'
        )
        LOADER.personalize_cli.create_filter(
            datasetGroupArn = dataset_group_arn,
            filterExpression = filter_expression,
            name = filter_name
        )
        status = LOADER.personalize_cli.describe_filter(
            filterArn=filterARN
        )['filter']['status']

    while status in {'CREATE PENDING', 'CREATE IN_PROGRESS'}:
        status = LOADER.personalize_cli.describe_filter(
            filterArn=filterARN
        )['filter']['status']

    if status != 'ACTIVE':
        raise actions.ResourceFailed

    return filterARN