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']