Ir al contenido

Agente Python a Base de Datos Relacional

El generador connection conecta un Agente Python a un proyecto de Base de Datos Relacional Python, haciendo que la sesión de base de datos esté disponible dentro de las herramientas de tu agente.

Antes de usar este generador, asegúrate de tener:

  1. Un proyecto py#agent
  2. Un proyecto py#rdb
  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - connection
  5. Complete los parámetros requeridos
    • Haga clic en Generate

    Selecciona tu proyecto de Agente como origen y tu proyecto de base de datos relacional como destino. Si el proyecto contiene múltiples componentes de agente, especifica sourceComponent para desambiguar.

    ParámetroTipoPredeterminadoDescripción
    sourceProject Requeridostring-El proyecto de origen
    targetProject Requeridostring-El proyecto de destino al que conectar
    sourceComponent string-El componente de origen desde el que conectar (nombre del componente, ruta relativa a la raíz del proyecto de origen, o id del generador). Use '.' para seleccionar explícitamente el proyecto como origen.
    targetComponent string-El componente de destino al que conectar (nombre del componente, ruta relativa a la raíz del proyecto de destino, o id del generador). Use '.' para seleccionar explícitamente el proyecto como destino.
    preferInstallDependencies booleantrueSi 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.
    • Directoriopackages/my_service
      • project.json Agrega una dependencia de my_agent-dev en el objetivo dev de la base de datos
      • pyproject.toml Agrega el paquete de base de datos como una dependencia del espacio de trabajo
      • Directoriomy_service
        • Directoriomy_agent
          • Dockerfile Agrega el paquete CA de RDS utilizado para conexiones directas a Aurora

    Usar la Base de Datos en Herramientas del Agente

    Sección titulada «Usar la Base de Datos en Herramientas del Agente»

    Importa session_context desde tu paquete de base de datos y úsalo dentro de las herramientas de tu agente:

    packages/my_service/my_service/my_agent/agent.py
    from sqlmodel import select
    from my_scope.my_db import session_context
    from my_scope.my_db.models.example import ExampleModel
    from strands import tool
    @tool
    async def list_examples() -> list:
    """List all example records."""
    async with session_context() as session:
    return [item.model_dump() for item in (await session.execute(select(ExampleModel))).all()]

    El constructo de agente generado implementa IGrantable e IConnectable, por lo que puedes otorgar acceso de red e IAM a la base de datos directamente en el constructo.

    packages/infra/src/stacks/application-stack.ts
    import { RuntimeNetworkConfiguration } from 'aws-cdk-lib/aws-bedrockagentcore';
    import { MyDatabase } from ':my-scope/common-constructs';
    const db = new MyDatabase(this, 'Db', { vpc, ... });
    const myAgent = new MyAgent(this, 'MyAgent', {
    networkConfiguration: RuntimeNetworkConfiguration.usingVpc(this, {
    vpc,
    vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
    }),
    });
    db.allowDefaultPortFrom(myAgent);
    db.grantConnect(myAgent);

    allowDefaultPortFrom abre la regla del grupo de seguridad para que el entorno de ejecución del agente pueda alcanzar el puerto de la base de datos. grantConnect otorga el permiso IAM rds-db:connect al rol de ejecución del agente.

    Cuando el agente se conecta directamente al clúster Aurora (sin RDS Proxy), el generador de conexión actualiza el Dockerfile del agente generado para instalar el paquete CA de Amazon RDS en el almacén de confianza del sistema:

    ADD https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem /usr/local/share/ca-certificates/rds-global-bundle.crt
    RUN update-ca-certificates

    Cuando uses RDS Proxy, no necesitas configurar el paquete CA de RDS en el entorno de ejecución del agente.

    Terminal window
    pnpm nx <agent-name>-dev <project-name>

    Esto inicia el agente y todas las bases de datos conectadas. La variable de entorno LOCAL_DEV=true hace que el cliente de base de datos se conecte a su base de datos Docker local en lugar de Aurora.