Python Agent a DynamoDB
El generador connection conecta un Python Agent a un proyecto Python DynamoDB, configurando el desarrollo local para que ambos se inicien juntos automáticamente.
Requisitos previos
Sección titulada «Requisitos previos»Antes de usar este generador, asegúrate de tener:
- Un proyecto
py#agent - Un proyecto
py#dynamodb
Ejecutar el generador
Sección titulada «Ejecutar el generador»Ejecute este generador@aws/nx-plugin:connection
pnpm nx g @aws/nx-plugin:connection yarn nx g @aws/nx-plugin:connection npx nx g @aws/nx-plugin:connection bunx nx g @aws/nx-plugin:connection- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - connection - Complete los parámetros requeridos
- Haga clic en
Generate
Construya su comando5
Requerido
Requerido
Selecciona tu proyecto Agent como origen y tu proyecto DynamoDB como destino. Si el proyecto contiene múltiples componentes de agente, especifica sourceComponent para desambiguar.
Opciones
Sección titulada «Opciones»sourceProjectRequeridostringEl proyecto de origen
targetProjectRequeridostringEl proyecto de destino al que conectar
sourceComponentstringEl componente de origen desde el cual conectar (nombre del componente, ruta relativa a la raíz del proyecto de origen, o id del generador). Usa '.' para seleccionar explícitamente el proyecto como origen.
targetComponentstringEl componente de destino al cual conectar (nombre del componente, ruta relativa a la raíz del proyecto de destino, o id del generador). Usa '.' para seleccionar explícitamente el proyecto como destino.
preferInstallDependenciesbooleanPredeterminado:trueSi se prefiere instalar las dependencias después de que se ejecute el generador. Establecer en false para diferir la instalación al ejecutar múltiples generadores en lote (la instalación aún se ejecuta si es necesario para que los generadores subsiguientes puedan calcular el grafo de proyectos de Nx); instalar una vez al final.
Salida del generador
Sección titulada «Salida del generador»El generador actualiza el target <agent-name>-dev del agente en project.json para que dependa del target dev del proyecto DynamoDB, y agrega el paquete DynamoDB como una dependencia del workspace. No se modifican archivos de código fuente.
Usar DynamoDB en Agents
Sección titulada «Usar DynamoDB en Agents»Importa las clases de entidad del paquete DynamoDB y úsalas dentro de las herramientas de tu agente:
from my_scope_my_table.entities.example import ExampleModelfrom strands import tool
@tooldef list_examples() -> list: """List all example items.""" return [item.attribute_values for item in ExampleModel.scan()]Infraestructura
Sección titulada «Infraestructura»Para permitir que la función Lambda del agente acceda a la tabla DynamoDB, otorga los permisos necesarios en tu infraestructura.
import { MyTable } from '@my-scope/common-constructs';
const table = new MyTable(this, 'Table');const myAgent = new MyAgent(this, 'MyAgent');
table.grantReadWriteData(myAgent);grantReadWriteData otorga tanto los permisos de DynamoDB como de KMS al rol de ejecución del agente.
Otorga al rol de tiempo de ejecución del agente acceso a la tabla y su clave de cifrado KMS a través de additional_iam_policy_statements:
module "my_table" { source = "../../common/terraform/src/app/dynamodb/my-table"}
module "my_agent" { source = "../../common/terraform/src/app/agents/my-agent"
additional_iam_policy_statements = [ { Effect = "Allow" Action = [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", ] Resource = [ module.my_table.table_arn, "${module.my_table.table_arn}/index/*", ] }, { Effect = "Allow" Action = [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", ] Resource = [module.my_table.kms_key_arn] }, ]}Desarrollo local
Sección titulada «Desarrollo local»El generador connection configura el target dev de tu proyecto para que dependa del target dev del proyecto DynamoDB. DynamoDB Local se iniciará automáticamente junto con tu proyecto al ejecutar dev.
La variable de entorno LOCAL_DEV=true se establece automáticamente, por lo que is_local() devuelve True y tus entidades PynamoDB se conectan a la instancia local de DynamoDB en lugar de AWS.