Aller au contenu

Agent Python vers Base de Données Relationnelle

Le générateur connection connecte un Agent Python à un projet Base de Données Relationnelle Python, rendant la session de base de données disponible dans vos outils d’agent.

Avant d’utiliser ce générateur, assurez-vous d’avoir :

  1. Un projet py#agent
  2. Un projet py#rdb
  1. Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
  2. Ouvrez la console Nx dans VSCode
  3. Cliquez sur Generate (UI) dans la section "Common Nx Commands"
  4. Recherchez @aws/nx-plugin - connection
  5. Remplissez les paramètres requis
    • Cliquez sur Generate

    Sélectionnez votre projet Agent comme source et votre projet de base de données relationnelle comme cible. Si le projet contient plusieurs composants d’agent, spécifiez sourceComponent pour lever l’ambiguïté.

    ParamètreTypePar défautDescription
    sourceProject Requisstring-Le projet source
    targetProject Requisstring-Le projet cible auquel se connecter
    sourceComponent string-Le composant source depuis lequel se connecter (nom du composant, chemin relatif à la racine du projet source, ou identifiant du générateur). Utilisez '.' pour sélectionner explicitement le projet comme source.
    targetComponent string-Le composant cible auquel se connecter (nom du composant, chemin relatif à la racine du projet cible, ou identifiant du générateur). Utilisez '.' pour sélectionner explicitement le projet comme cible.
    preferInstallDependencies booleantrueIndique s'il faut privilégier l'installation des dépendances après l'exécution du générateur. Définir à false pour différer l'installation lors de l'exécution de plusieurs générateurs en lot (une installation s'exécute quand même si nécessaire pour que les générateurs suivants puissent calculer le graphe de projet Nx) ; installer une seule fois à la fin.
    • Répertoirepackages/my_service
      • project.json Ajoute une dépendance de my_agent-dev sur la cible dev de la base de données
      • pyproject.toml Ajoute le package de base de données comme dépendance de l’espace de travail
      • Répertoiremy_service
        • Répertoiremy_agent
          • Dockerfile Ajoute le bundle CA RDS utilisé pour les connexions directes à Aurora

    Utiliser la Base de Données dans les Outils d’Agent

    Section intitulée « Utiliser la Base de Données dans les Outils d’Agent »

    Importez session_context depuis votre package de base de données et utilisez-le dans vos outils d’agent :

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

    Le construct d’agent généré implémente IGrantable et IConnectable, vous pouvez donc accorder l’accès réseau et IAM à la base de données directement sur le construct.

    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 ouvre la règle du groupe de sécurité afin que l’environnement d’exécution de l’agent puisse atteindre le port de la base de données. grantConnect accorde la permission IAM rds-db:connect au rôle d’exécution de l’agent.

    Lorsque l’agent se connecte directement au cluster Aurora (sans RDS Proxy), le générateur de connexion met à jour le Dockerfile de l’agent généré pour installer le bundle CA Amazon RDS dans le magasin de confiance du système :

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

    Lors de l’utilisation de RDS Proxy, vous n’avez pas besoin de configurer le bundle CA RDS dans l’environnement d’exécution de l’agent.

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

    Cela démarre l’agent et toutes les bases de données connectées. La variable d’environnement LOCAL_DEV=true fait en sorte que le client de base de données se connecte à sa base de données Docker locale au lieu d’Aurora.