Salta ai contenuti

Python Agent a DynamoDB

Il generatore connection collega un Python Agent a un progetto Python DynamoDB, configurando lo sviluppo locale in modo che entrambi si avviino insieme automaticamente.

Prima di utilizzare questo generatore, assicurati di avere:

  1. Un progetto py#agent
  2. Un progetto py#dynamodb
Terminal window
pnpm nx g @aws/nx-plugin:connection
Puoi anche eseguire una prova per vedere quali file verrebbero modificati
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

Seleziona il tuo progetto Agent come sorgente e il tuo progetto DynamoDB come destinazione. Se il progetto contiene più componenti agent, specifica sourceComponent per disambiguare.

ParametroTipoPredefinitoDescrizione
sourceProject Obbligatoriostring-Il progetto sorgente
targetProject Obbligatoriostring-Il progetto di destinazione a cui connettersi
sourceComponent string-Il componente sorgente da cui connettersi (nome del componente, percorso relativo alla radice del progetto sorgente, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come sorgente.
targetComponent string-Il componente di destinazione a cui connettersi (nome del componente, percorso relativo alla radice del progetto di destinazione, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come destinazione.
preferInstallDependencies booleantrueSe preferire l'installazione delle dipendenze dopo l'esecuzione del generatore. Impostare su false per rimandare l'installazione quando si eseguono più generatori in batch (l'installazione viene comunque eseguita se necessaria affinché i generatori successivi possano calcolare il grafo dei progetti Nx); installare una volta alla fine.

Il generatore aggiorna il target <agent-name>-dev dell’agent in project.json per dipendere dal target dev del progetto DynamoDB, e aggiunge il package DynamoDB come dipendenza del workspace. Nessun file sorgente viene modificato.

Importa le classi entity dal package DynamoDB e usale all’interno dei tuoi strumenti agent:

packages/my_project/my_project/my_agent/agent.py
from my_scope.my_table.entities.example import ExampleModel
from strands import tool
@tool
def list_examples() -> list:
"""List all example items."""
return [item.attribute_values for item in ExampleModel.scan()]

Per consentire alla funzione Lambda dell’agent di accedere alla tabella DynamoDB, concedi i permessi necessari nella tua infrastruttura.

packages/infra/src/stacks/application-stack.ts
import { MyTable } from '@my-scope/common-constructs';
const table = new MyTable(this, 'Table');
const myAgent = new MyAgent(this, 'MyAgent');
table.grantReadWriteData(myAgent);

grantReadWriteData concede sia i permessi DynamoDB che KMS al ruolo di esecuzione dell’agent.

Il generatore connection configura il target dev del tuo progetto per dipendere dal target dev del progetto DynamoDB. DynamoDB Local si avvierà automaticamente insieme al tuo progetto quando esegui dev.

La variabile d’ambiente LOCAL_DEV=true viene impostata automaticamente, quindi is_local() restituisce True e le tue entità PynamoDB si connettono all’istanza locale di DynamoDB invece che ad AWS.