Pular para o conteúdo

Python Agent para DynamoDB

O gerador connection conecta um Python Agent a um projeto Python DynamoDB, configurando o desenvolvimento local para que ambos iniciem juntos automaticamente.

Antes de usar este gerador, certifique-se de ter:

  1. Um projeto py#agent
  2. Um projeto py#dynamodb
Terminal window
pnpm nx g @aws/nx-plugin:connection
Você também pode realizar uma execução simulada para ver quais arquivos seriam alterados
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

Selecione seu projeto Agent como origem e seu projeto DynamoDB como destino. Se o projeto contiver múltiplos componentes de agente, especifique sourceComponent para desambiguar.

ParâmetroTipoPadrãoDescrição
sourceProject Obrigatóriostring-O projeto de origem
targetProject Obrigatóriostring-O projeto de destino para conectar
sourceComponent string-O componente de origem para conectar (nome do componente, caminho relativo à raiz do projeto de origem, ou id do gerador). Use '.' para selecionar explicitamente o projeto como origem.
targetComponent string-O componente de destino para conectar (nome do componente, caminho relativo à raiz do projeto de destino, ou id do gerador). Use '.' para selecionar explicitamente o projeto como destino.
preferInstallDependencies booleantrueSe deve preferir instalar dependências após a execução do gerador. Defina como false para adiar a instalação ao executar múltiplos geradores em lote (uma instalação ainda é executada se necessário para que os geradores subsequentes possam calcular o grafo de projetos Nx); instale uma vez no final.

O gerador atualiza o target <agent-name>-dev do agente em project.json para depender do target dev do projeto DynamoDB, e adiciona o pacote DynamoDB como uma dependência do workspace. Nenhum arquivo de código-fonte é modificado.

Importe classes de entidade do pacote DynamoDB e use-as dentro das ferramentas do seu agente:

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()]

Para permitir que a função Lambda do agente acesse a tabela DynamoDB, conceda as permissões necessárias em sua infraestrutura.

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 tanto as permissões do DynamoDB quanto do KMS para a função de execução do agente.

O gerador connection configura o target dev do seu projeto para depender do target dev do projeto DynamoDB. O DynamoDB Local será iniciado automaticamente junto com seu projeto ao executar dev.

A variável de ambiente LOCAL_DEV=true é definida automaticamente, então is_local() retorna True e suas entidades PynamoDB se conectam à instância local do DynamoDB em vez da AWS.