Ir al contenido

Agente Python a Gateway

El generador connection puede conectar tu Agente Python a un Gateway AgentCore.

El generador configura el agente para que se autentique en el Gateway con IAM SigV4 (mediante firma de solicitudes httpx) cuando se despliega, y se conecta al gateway local iniciado por el proyecto Gateway cuando se ejecuta localmente.

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

  1. Un proyecto Python con un componente Agent (infra: agentcore)
  2. Un proyecto agentcore-gateway
  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 el proyecto del agente como origen y el proyecto del Gateway como destino.

    Parámetro Tipo Predeterminado Descripción
    sourceProject Requerido string - El proyecto de origen
    targetProject Requerido string - 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 boolean true Si 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.

    El generador emite módulos compartidos de core-gateway en tu proyecto Python agent_connection, además de un envoltorio por Gateway, y modifica tu agente:

    • Directoriopackages/common/agent_connection
      • Directorio<scope>_agent_connection
        • Directoriocore/
          • agentcore_endpoints.py Resolución de ARN/URL independiente del framework
          • agentcore_gateway_mcp_transport.py Transporte MCP Gateway independiente del framework
          • agentcore_gateway_mcp_client_<framework>.py Cliente MCP Gateway para el framework de tu agente
          • Directorioauth/ httpx.Auth SigV4 / reenvío de sesión independiente del framework
        • Directorioapp/
          • <gateway_snake>_client_<framework>.py Envoltorio de cliente por Gateway
        • __init__.py Re-exporta el cliente del Gateway

    El sufijo del cliente coincide con el framework de tu agente (_strands o _langchain).

    Además, el generador:

    • Modifica el agent.py de tu agente para importar el cliente del Gateway y registrar sus herramientas en tools
    • Agrega agent_connection como dependencia del espacio de trabajo del agente
    • Conecta el objetivo <agent>-dev del agente para que dependa del objetivo dev del Gateway

    El generador transforma el agent.py de tu agente para usar el cliente del Gateway:

    packages/example/example/my_agent/agent.py
    from contextlib import contextmanager
    from strands import Agent
    from my_scope_agent_connection import MyGatewayClientStrands
    @contextmanager
    def get_agent():
    my_gateway = MyGatewayClientStrands.create()
    with (
    my_gateway,
    ):
    yield Agent(
    system_prompt="...",
    tools=[*my_gateway.list_tools_sync()],
    )

    MyGatewayClientStrands.create() devuelve un único MCPClient administrable por contexto cuyo list_tools_sync() produce cada herramienta disponible a través del Gateway.

    En ambos casos, el cliente se comporta de la misma manera según el modo:

    • Modo desplegado (LOCAL_DEV no establecido): herramientas apuntando al endpoint MCP del Gateway, firmado con SigV4.
    • Modo local (LOCAL_DEV=true): herramientas HTTP simples apuntando al gateway local iniciado por el objetivo dev del proyecto Gateway.

    El ID de sesión se propaga automáticamente a los servidores MCP descendentes a través del encabezado X-Amzn-Bedrock-AgentCore-Runtime-Session-Id.

    Después de ejecutar el generador, debes otorgar al agente permiso para invocar el Gateway.

    packages/infra/src/stacks/application-stack.ts
    const gateway = new MyGateway(this, 'MyGateway');
    const myAgent = new MyAgent(this, 'MyAgent');
    // Grant the agent permissions to invoke the Gateway
    gateway.grantInvokeAccess(myAgent);

    La URL del Gateway se registra automáticamente en el espacio de nombres agentcore.gateways.<ClassName> de Runtime Configuration por el constructo CDK generado, para que el agente pueda descubrirlo en tiempo de ejecución.

    El generador configura el objetivo dev del agente para:

    1. Iniciar el gateway local del Gateway conectado y cada servidor MCP adjunto
    2. Establecer LOCAL_DEV=true para que el cliente generado apunte al gateway local en lugar del Gateway desplegado

    Ejecuta el agente localmente con:

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

    Para ejecutar el agente localmente contra el Gateway desplegado en su lugar (por ejemplo, para ejercitar políticas Cedar), usa el objetivo serve del agente. Sin LOCAL_DEV establecido, el cliente resuelve la URL del Gateway desplegado desde la configuración de tiempo de ejecución y firma las solicitudes con SigV4 usando tus credenciales AWS locales:

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

    El gateway local sustituye al Gateway desplegado, por lo que:

    • Sin evaluación de políticas Cedar. Cada herramienta es visible para el agente independientemente de las políticas. Usa el objetivo serve para ejercitar políticas contra el Gateway desplegado.
    • Se preserva el prefijo de nombres de herramientas. Las herramientas de cada servidor MCP local se exponen como <target-name>___<tool-name>, coincidiendo con lo que emite el Gateway desplegado. Esto mantiene el prompt del sistema del agente y los nombres de acción Cedar que referencias consistentes entre ejecuciones locales y desplegadas.