Python Agent a Gateway
Il generatore connection può connettere il tuo Python Agent a un AgentCore Gateway.
Il generatore configura l’agent in modo che si autentichi al Gateway con IAM SigV4 (tramite la firma delle richieste httpx) quando distribuito, e si connetta al gateway locale avviato dal progetto Gateway quando eseguito localmente.
Prerequisiti
Sezione intitolata “Prerequisiti”Prima di utilizzare questo generatore, assicurati di avere:
- Un progetto Python con un componente Agent (
infra: agentcore) - Un progetto
agentcore-gateway
Utilizzo
Sezione intitolata “Utilizzo”Eseguire il Generatore
Sezione intitolata “Eseguire il Generatore”- Installa il Nx Console VSCode Plugin se non l'hai già fatto
- Apri la console Nx in VSCode
- Clicca su
Generate (UI)nella sezione "Common Nx Commands" - Cerca
@aws/nx-plugin - connection - Compila i parametri richiesti
- Clicca su
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:connectionPuoi anche eseguire una prova per vedere quali file verrebbero modificati
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-runSeleziona il progetto agent come sorgente e il progetto Gateway come destinazione.
Opzioni
Sezione intitolata “Opzioni”| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
| sourceProject Obbligatorio | string | - | Il progetto sorgente |
| targetProject Obbligatorio | string | - | Il progetto di destinazione a cui connettersi |
| sourceComponent | string | - | Il componente sorgente da cui connettersi (nome del componente, percorso relativo alla radice del progetto sorgente, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come sorgente. |
| targetComponent | string | - | Il componente di destinazione a cui connettersi (nome del componente, percorso relativo alla radice del progetto di destinazione, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come destinazione. |
| preferInstallDependencies | boolean | true | Se preferire l'installazione delle dipendenze dopo l'esecuzione del generatore. Impostare su false per rimandare l'installazione quando si eseguono più generatori in batch (l'installazione viene comunque eseguita se necessaria affinché i generatori successivi possano calcolare il grafo dei progetti Nx); installare una volta alla fine. |
Output del Generatore
Sezione intitolata “Output del Generatore”Il generatore emette moduli core-gateway condivisi nel tuo progetto Python agent_connection, più un wrapper per-Gateway, e modifica il tuo agent:
Directorypackages/common/agent_connection
Directory<scope>_agent_connection
Directorycore/
- agentcore_endpoints.py Risoluzione ARN/URL indipendente dal framework
- agentcore_gateway_mcp_transport.py Trasporto MCP Gateway indipendente dal framework
- agentcore_gateway_mcp_client_<framework>.py Client MCP Gateway per il framework del tuo agent
Directoryauth/
httpx.AuthSigV4 / session-forwarding indipendente dal framework- …
Directoryapp/
- <gateway_snake>_client_<framework>.py Wrapper client per-Gateway
- __init__.py Ri-esporta il client Gateway
Il suffisso del client corrisponde al framework del tuo agent (_strands o _langchain).
Inoltre, il generatore:
- Modifica il file
agent.pydel tuo agent per importare il client Gateway e registrare i suoi strumenti intools - Aggiunge
agent_connectioncome dipendenza workspace dell’agent - Collega il target
<agent>-devdell’agent per dipendere dal targetdevdel Gateway
Utilizzare il Gateway connesso
Sezione intitolata “Utilizzare il Gateway connesso”Il generatore trasforma il file agent.py del tuo agent per utilizzare il client 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() restituisce un singolo MCPClient gestibile tramite context manager il cui list_tools_sync() fornisce ogni strumento disponibile attraverso il 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() restituisce una lista di strumenti caricati tramite langchain-mcp-adapters. Ogni strumento apre una nuova sessione per chiamata, quindi non è necessario un blocco with.
In entrambi i casi il client si comporta allo stesso modo per modalità:
- Modalità distribuita (
LOCAL_DEVnon impostato): strumenti puntati all’endpoint MCP del Gateway, firmati con SigV4. - Modalità locale (
LOCAL_DEV=true): strumenti HTTP semplici puntati al gateway locale avviato dal targetdevdel progetto Gateway.
L’ID di sessione viene propagato automaticamente ai server MCP downstream tramite l’header X-Amzn-Bedrock-AgentCore-Runtime-Session-Id.
Infrastruttura
Sezione intitolata “Infrastruttura”Dopo aver eseguito il generatore devi concedere all’agent il permesso di invocare il Gateway.
const gateway = new MyGateway(this, 'MyGateway');const myAgent = new MyAgent(this, 'MyAgent');
// Grant the agent permissions to invoke the Gatewaygateway.grantInvokeAccess(myAgent);L’URL del Gateway viene automaticamente registrato nel namespace agentcore.gateways.<ClassName> della Runtime Configuration dal costrutto CDK generato, in modo che l’agent possa scoprirlo a runtime.
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}L’URL del Gateway viene automaticamente registrato nel namespace agentcore.gateways.<ClassName> della Runtime Configuration dal modulo Terraform generato, in modo che l’agent possa scoprirlo a runtime.
Sviluppo Locale
Sezione intitolata “Sviluppo Locale”Il generatore configura il target dev dell’agent per:
- Avviare il gateway locale del Gateway connesso e ogni server MCP collegato
- Impostare
LOCAL_DEV=truein modo che il client generato punti al gateway locale invece del Gateway distribuito
Esegui l’agent 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>Per eseguire l’agent localmente contro il Gateway distribuito invece (ad esempio, per esercitare le policy Cedar), utilizza il target serve dell’agent. Senza LOCAL_DEV impostato, il client risolve l’URL del Gateway distribuito dalla configurazione runtime e firma le richieste con SigV4 utilizzando le tue credenziali AWS locali:
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>Fedeltà locale
Sezione intitolata “Fedeltà locale”Il gateway locale sostituisce il Gateway distribuito, quindi:
- Nessuna valutazione delle policy Cedar. Ogni strumento è visibile all’agent indipendentemente dalle policy. Utilizza il target
serveper esercitare le policy contro il Gateway distribuito. - Il prefisso del nome dello strumento è preservato. Gli strumenti di ciascun server MCP locale sono esposti come
<target-name>___<tool-name>, corrispondendo a ciò che emette il Gateway distribuito. Questo mantiene il system prompt dell’agent e i nomi delle azioni Cedar che referenzi coerenti tra esecuzioni locali e distribuite. te.