Comment gérer une base de connaissances Amazon Bedrock à l'aide de Terraform

DEV - 02/06
Introduction Dans le billet de blog précédent, Ajout d'une base de connaissances Amazon Bedrock au...

Introduction

Dans le billet de blog précédent, Ajout d'une base de connaissances Amazon Bedrock à l'assistant de taux Forex, j'ai expliqué comment créer une base de connaissances Bedrock et l'associer à un agent Bedrock à l'aide d'AWS Management Console, avec un assistant de taux de change comme exemple de cas d'utilisation. .

Nous avons également expliqué comment gérer les agents Bedrock avec Terraform dans un autre article de blog, Comment gérer un agent Amazon Bedrock à l'aide de Terraform. Dans cet article de blog, nous étendrons cette configuration pour gérer également les bases de connaissances dans Terraform. Pour commencer, nous examinerons d'abord les ressources AWS pertinentes dans AWS Management Console.

Faire l'inventaire des ressources nécessaires

En examinant la base de connaissances que nous avons créée précédemment, nous constatons qu'elle comprend les ressources AWS suivantes :

  1. La base de connaissances elle-même ;

  2. Le rôle de service de base de connaissances qui fournit à la base de connaissances un accès aux modèles Amazon Bedrock, aux sources de données dans S3 et à l'index vectoriel ;

  3. Les politiques, la collection et l'index vectoriel d'OpenSearch Serverless ;

  4. Le bucket S3 qui fait office de source de données

Avec cette liste de ressources, ainsi que celles requises par l'agent auquel la base de connaissances sera attachée, nous pouvons commencer à créer la configuration Terraform. Avant de plonger dans la configuration, occupons-nous d’abord des prérequis.

Définir des variables pour la configuration

Pour une meilleure gestion, nous définissons certaines variables dans unvariables.tffichier que nous référencerons tout au long de la configuration de Terraform :

variable "kb_s3_bucket_name_prefix" { description = "Le préfixe de nom du compartiment S3 pour la source de données de la base de connaissances." type = string default = "forex-kb" } variable "kb_oss_collection_name" { description = "Le nom de la collection OSS pour la base de connaissances." type = string default = "bedrock-knowledge-base-forex-kb" } variable "kb_model_id" { description = "L'ID du modèle fondamental utilisé par la base de connaissances." type = string default = "amazon.titan-embed-text-v1" } variable "kb_name" { description = "Le nom de la base de connaissances." type = chaîne par défaut = "ForexKB" ​​}
Entrer en mode plein écran Quitter le mode plein écran

Définir les ressources S3 et IAM

La base de connaissances nécessite un rôle de service, qui peut être créé à l'aide duaws_iam_roleressource comme suit :

data "aws_caller_identity" "this" {} data "aws_partition" "this" {} data "aws_region" "this" {} locals { account_id = data.aws_caller_identity.this.account_id partition = data.aws_partition.this.partition region = data .aws_region.this.name region_name_tokenized = split("-", local.region) region_short = "${substr(local.region_name_tokenized[0], 0, 2)}${substr(local.region_name_tokenized[1], 0, 1)}${local.region_name_tokenized[2]}" } ressource "aws_iam_role" "bedrock_kb_forex_kb" { name = "AmazonBedrockExecutionRoleForKnowledgeBase_${var.kb_name}" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Autoriser" Principal = { Service = "bedrock.amazonaws.com" } Condition = { StringEquals = { "aws:SourceAccount" = local.account_id } ArnLike = { "aws:SourceArn" = "arn:${local.partition}:bedrock:${local.region}:${local.account_id}:knowledge-base/*" } } } ] }) }
Entrer en mode plein écran Quitter le mode plein écran

Une fois le rôle de service en place, nous pouvons maintenant procéder à la définition de la stratégie IAM correspondante. Au fur et à mesure que nous définissons la configuration de création des ressources auxquelles le rôle de service ...
[Courte citation de 8% de l'article original]

Loading...