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.
Requisitos previos
Sección titulada «Requisitos previos»Antes de usar este generador, asegúrate de tener:
- Un proyecto Python con un componente Agent (
infra: agentcore) - Un proyecto
agentcore-gateway
Ejecutar el generador
Sección titulada «Ejecutar el generador»- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - connection - Complete los parámetros requeridos
- Haga clic en
Generate
pnpm nx g @aws/nx-plugin:connectionyarn nx g @aws/nx-plugin:connectionnpx nx g @aws/nx-plugin:connectionbunx nx g @aws/nx-plugin:connectionTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
pnpm nx g @aws/nx-plugin:connection --dry-runyarn nx g @aws/nx-plugin:connection --dry-runnpx nx g @aws/nx-plugin:connection --dry-runbunx nx g @aws/nx-plugin:connection --dry-runSelecciona el proyecto del agente como origen y el proyecto del Gateway como destino.
Opciones
Sección titulada «Opciones»| 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. |
Salida del generador
Sección titulada «Salida del generador»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.AuthSigV4 / 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.pyde tu agente para importar el cliente del Gateway y registrar sus herramientas entools - Agrega
agent_connectioncomo dependencia del espacio de trabajo del agente - Conecta el objetivo
<agent>-devdel agente para que dependa del objetivodevdel Gateway
Usar el Gateway conectado
Sección titulada «Usar el Gateway conectado»El generador transforma el agent.py de tu agente para usar el cliente del Gateway:
from contextlib import contextmanagerfrom strands import Agent
from my_scope_agent_connection import MyGatewayClientStrands
@contextmanagerdef 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.
from langchain.agents import create_agentfrom langchain_aws import ChatBedrockConverse
from my_scope_agent_connection import MyGatewayClientLangChain
def get_agent(): my_gateway = MyGatewayClientLangChain.create() return create_agent( model=ChatBedrockConverse(model=MODEL_ID, region_name=REGION), system_prompt="...", tools=[*my_gateway], )MyGatewayClientLangChain.create() devuelve una lista de herramientas cargadas mediante langchain-mcp-adapters. Cada herramienta abre una sesión nueva por llamada, por lo que no se necesita un bloque with.
En ambos casos, el cliente se comporta de la misma manera según el modo:
- Modo desplegado (
LOCAL_DEVno 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 objetivodevdel 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.
Infraestructura
Sección titulada «Infraestructura»Después de ejecutar el generador, debes otorgar al agente permiso para invocar el Gateway.
const gateway = new MyGateway(this, 'MyGateway');const myAgent = new MyAgent(this, 'MyAgent');
// Grant the agent permissions to invoke the Gatewaygateway.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.
module "my_gateway" { source = "../../common/terraform/src/app/gateways/my-gateway"}
module "my_agent" { source = "../../common/terraform/src/app/agents/my-agent"}
# Grant the agent permission to invoke the Gatewayresource "aws_iam_policy" "agent_invoke_gateway" { name = "AgentInvokeGatewayPolicy" policy = jsonencode({ Version = "2012-10-17" Statement = [{ Effect = "Allow" Action = "bedrock-agentcore:InvokeGateway" Resource = module.my_gateway.gateway_arn }] })}
resource "aws_iam_role_policy_attachment" "agent_invoke_gateway" { role = module.my_agent.agent_core_runtime_role_arn policy_arn = aws_iam_policy.agent_invoke_gateway.arn}La URL del Gateway se registra automáticamente en el espacio de nombres agentcore.gateways.<ClassName> de Runtime Configuration por el módulo Terraform generado, para que el agente pueda descubrirlo en tiempo de ejecución.
Desarrollo local
Sección titulada «Desarrollo local»El generador configura el objetivo dev del agente para:
- Iniciar el gateway local del Gateway conectado y cada servidor MCP adjunto
- Establecer
LOCAL_DEV=truepara que el cliente generado apunte al gateway local en lugar del Gateway desplegado
Ejecuta el agente localmente con:
pnpm nx <agent-name>-dev <project-name>yarn nx <agent-name>-dev <project-name>npx nx <agent-name>-dev <project-name>bunx 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:
pnpm nx <agent-name>-serve <project-name>yarn nx <agent-name>-serve <project-name>npx nx <agent-name>-serve <project-name>bunx nx <agent-name>-serve <project-name>Fidelidad local
Sección titulada «Fidelidad local»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
servepara 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.