Код: Выделить всё
bedrock_client = boto3.client('bedrock-agent', region_name='us-east-2')
def create_bedrock_knowledge_base(user_id, s3_bucket, collection_name):
print('Creating Knowledge Base')
response = bedrock_client.create_knowledge_base(
clientToken=f"{user_id}-token".ljust(33, '0'),
description=f"Creating knowledge base for user {user_id}",
knowledgeBaseConfiguration = {
'type': 'VECTOR',
'vectorKnowledgeBaseConfiguration': {
'embeddingModelArn': 'arn:aws:bedrock:us-east-2:aws:model/amazon.titan-embed-text-v2:0',
'embeddingModelConfiguration': {
'bedrockEmbeddingModelConfiguration': {
'dimensions': 1024
}
}
}
},
name=f"KnowledgeBase_{user_id}",
roleArn='',
storageConfiguration = {
'mongoDbAtlasConfiguration': {
'collectionName': collection_name,
'credentialsSecretArn': '',
'databaseName': 'bedrock',
'endpoint': 'mongodb+srv://:
@..mongodb.net',
'fieldMapping': {
'metadataField': 'metadata',
'textField': 'text',
'vectorField': 'embedding',
},
'vectorIndexName': 'vector_index',
},
'type': 'MONGO_DB_ATLAS',
}
)
return response['knowledgeBaseArn']
Код: Выделить всё
botocore.errorfactory.AccessDeniedException: An error occurred (AccessDeniedException) when calling the CreateKnowledgeBase operation: User: is not authorized to perform: bedrock:CreateKnowledgeBase
Изменить: я также вручную добавил политику и попробовал ее, но все равно та же ошибка. Я попробовал вручную с помощью InvokeModel, он выдал ошибку, и когда я добавил его, он работал.
Подробнее здесь: https://stackoverflow.com/questions/791 ... on-bedrock