Salta ai contenuti

Sito Web React ad AgentCore Gateway

Il generatore connection può connettere un sito web React agli agenti esposti da un AgentCore Gateway generato con protocol: http.

Il browser comunica solo con il Gateway — le richieste a <gatewayUrl>/<targetName>/invocations vengono inoltrate al runtime dell’agente dietro di esso. Poiché il sito web non ha mai bisogno di raggiungere direttamente i runtime, gli agenti possono essere distribuiti all’interno di un VPC, con il Gateway come unico punto di ingresso governato che fornisce autenticazione e osservabilità.

Prima di utilizzare questo generatore, assicurati di avere:

  1. Un progetto sito web React
  2. Un progetto agentcore-gateway generato con protocol: http
  3. Almeno un agente AG-UI o HTTP collegato al Gateway tramite il generatore di connessione Gateway ad agente

Il generatore crea un client del sito web per ogni agente AG-UI o HTTP collegato al Gateway (i target A2A vengono saltati — parlano JSON-RPC agente-ad-agente, non un protocollo browser). Genera gli stessi client della connessione diretta del sito web a ciascun agente (AG-UI/CopilotKit per gli agenti AG-UI, un client OpenAPI per gli agenti Python HTTP), instradati attraverso il Gateway anziché al runtime.

  1. Installa il Nx Console VSCode Plugin se non l'hai già fatto
  2. Apri la console Nx in VSCode
  3. Clicca su Generate (UI) nella sezione "Common Nx Commands"
  4. Cerca @aws/nx-plugin - connection
  5. Compila i parametri richiesti
    • Clicca su Generate

    Seleziona il progetto del sito web come sorgente e il progetto Gateway come destinazione.

    ParametroTipoPredefinitoDescrizione
    sourceProject Obbligatoriostring-Il progetto sorgente
    targetProject Obbligatoriostring-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 booleantrueSe 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.

    Per ogni agente AG-UI esposto, vengono generati gli stessi file della connessione React ad agente AG-UI (un AguiProvider, un hook useAgui<Agent> e un modulo di componenti CopilotKit tematizzato), con l’hook che legge l’URL del Gateway dalla configurazione di runtime:

    • Directorypackages/<website>/src
      • Directorycomponents
        • AguiProvider.tsx Provider CopilotKit che registra ogni agente
        • Directorycopilot/ Componenti chat tematizzati
      • Directoryhooks
        • useAgui<Agent>.tsx Si connette all’agente tramite la route /<targetName>/invocations del Gateway

    Per ogni agente Python HTTP esposto, vengono generati gli stessi file della connessione React ad agente Python (un client OpenAPI type-safe, hook e un provider), con l’URL base del client instradato attraverso il Gateway.

    L’URL del Gateway è registrato nello spazio dei nomi connection.gateways.<GatewayClassName> della Configurazione di Runtime, quindi viene pubblicato nel runtime-config.json del sito web.

    Per un Gateway IAM, concedi agli utenti autenticati del sito web il permesso di invocarlo (un Gateway Cognito non necessita di concessione — il browser si autentica invece con il suo token bearer JWT):

    packages/infra/src/stacks/application-stack.ts
    const identity = new UserIdentity(this, 'UserIdentity');
    new Website(this, 'Website');
    const myGateway = new MyGateway(this, 'MyGateway');
    myGateway.addAgent(myAgent);
    myGateway.grantInvokeAccess(identity.identityPool.authenticatedRole);

    Il target dev del sito web acquisisce una dipendenza dal target dev del progetto Gateway, che avvia il gateway locale più ogni agente collegato. La configurazione di runtime del sito web viene sovrascritta in modalità local-dev per puntare l’URL del Gateway al gateway locale, in modo che il browser eserciti le stesse route /<targetName>/invocations localmente:

    Terminal window
    pnpm nx dev <website-name>

    Il generatore connette il sito web agli agenti collegati al Gateway al momento dell’esecuzione. Dopo aver collegato un altro agente al Gateway, riesegui il generatore di connessione per generare il suo client del sito web — i client esistenti rimangono intatti.