def create_kendra_data_source()

in functions/source/kendra_custom_resource/kendra_custom_resource.py [0:0]


def create_kendra_data_source(kendra_index_id, resource_properties):
    """
    Creates Kendra data source.
    :param kendra_index_id: Kendra Index Id
    :param resource_properties: Dictionary of resources properties.
                                DataSourceName, KendraS3Bucket and DataSourceRoleArn are mandatory.
    :return: Data Source Id
    """
    data_source_kwargs = {
        'Name': resource_properties['DataSourceName'],
        'IndexId': kendra_index_id,
        'Type': 'S3',
        'Configuration': {
            'S3Configuration': {
                'BucketName': resource_properties['KendraS3Bucket'],
                'ExclusionPatterns': [
                    '*faq*',
                    '*FAQ*'
                ]
            },
        },
        'RoleArn': resource_properties['DataSourceRoleArn']
    }
    if 'IndexDescription' in resource_properties:
        data_source_kwargs['Description'] = resource_properties['IndexDescription']
    else:
        data_source_kwargs['Description'] = "Lex-Kendra-bot Data Source"
    
    try:
        response_data_source = kendra_client.create_data_source(**data_source_kwargs)
    except:
        time.sleep(15)
        response_data_source = kendra_client.create_data_source(**data_source_kwargs)
    logger.info('DataSourceId: %s', str(response_data_source['Id']))
    return response_data_source['Id']