TypeScript Agent a Gateway
Il generatore connection può connettere il tuo TypeScript Agent a un AgentCore Gateway.
Il generatore configura l’agent in modo che si autentichi al Gateway con IAM SigV4 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 TypeScript con un componente Agent (
infra: agentcore) - Un progetto
agentcore-gatewayconauth: iam
Il Gateway deve utilizzare l’autenticazione IAM — l’agent firma le sue richieste con SigV4 utilizzando il proprio ruolo di esecuzione. Il generatore rifiuta i gateway autenticati con Cognito.
Utilizzo
Sezione intitolata “Utilizzo”Esegui il Generatore
Sezione intitolata “Esegui il Generatore”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-run- 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
Seleziona 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 file client core condivisi nel tuo package agent-connection, più un wrapper per Gateway, e modifica il tuo agent:
Directorypackages/common/agent-connection
Directorysrc
Directorycore/
- agentcore-endpoints.ts Risoluzione ARN/URL indipendente dal framework
- agentcore-gateway-mcp-transport.ts Trasporto MCP Gateway indipendente dal framework
- agentcore-gateway-mcp-client-strands.ts Client MCP Strands per il Gateway distribuito
Directoryapp/
- <gateway-kebab>-client-strands.ts Wrapper client Strands per Gateway
- index.ts Ri-esporta il client Gateway
Inoltre, il generatore:
- Modifica il file
agent.tsdel tuo agent per importare la classe client Gateway, chiamare<Gateway>ClientStrands.create(), e registrare il client restituito nell’arraytools - Configura il target
<agent>-devdell’agent per dipendere dal targetdevdel Gateway - Installa le dipendenze SigV4 / MCP richieste
Utilizzo del Gateway connesso
Sezione intitolata “Utilizzo del Gateway connesso”Il generatore trasforma il file agent.ts del tuo agent per utilizzare il client Gateway:
import { Agent } from '@strands-agents/sdk';import { MyGatewayClientStrands } from '@my-scope/agent-connection';
export const getAgent = async () => { const myGateway = await MyGatewayClientStrands.create(); return new Agent({ systemPrompt: '...', tools: [myGateway], });};Quando distribuito (LOCAL_DEV non impostato), il client punta all’endpoint MCP del Gateway e si autentica con SigV4. Quando LOCAL_DEV=true, punta al gateway locale avviato dal target dev del progetto Gateway, quindi lo stesso agent.ts funziona uniformemente in entrambe le modalità.
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 Gateway additional_iam_policy_statements = [{ Effect = "Allow" Action = ["bedrock-agentcore:InvokeGateway"] Resource = [module.my_gateway.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 tool è visibile all’agent indipendentemente dalle policy. Utilizza il target
serveper esercitare le policy contro il Gateway distribuito. - Il prefisso dei nomi dei tool è preservato. I tool di ogni server MCP locale sono wrappati per esporre nomi nella forma
<target-name>___<tool-name>, corrispondenti a ciò che emette il Gateway distribuito. Questo mantiene il prompt di sistema dell’agent e i nomi delle azioni Cedar che referenzi coerenti tra esecuzioni locali e distribuite.