Site React para AgentCore Gateway
O gerador connection pode conectar um site React aos agentes expostos por um AgentCore Gateway gerado com protocol: http.
O navegador se comunica apenas com o Gateway — requisições para <gatewayUrl>/<targetName>/invocations são encaminhadas por proxy para o runtime do agente por trás dele. Como o site nunca precisa alcançar os runtimes diretamente, os agentes podem ser implantados dentro de uma VPC, com o Gateway como o único ponto de entrada governado fornecendo autenticação e observabilidade.
Pré-requisitos
Seção intitulada “Pré-requisitos”Antes de usar este gerador, certifique-se de ter:
- Um projeto de site React
- Um projeto
agentcore-gatewaygerado comprotocol: http - Pelo menos um agente AG-UI ou HTTP anexado ao Gateway através do gerador de conexão Gateway para agente
O gerador cria um cliente de site para cada agente AG-UI ou HTTP anexado ao Gateway (alvos A2A são ignorados — eles falam JSON-RPC de agente para agente, não um protocolo de navegador). Ele gera os mesmos clientes que conectar o site a cada agente diretamente (AG-UI/CopilotKit para agentes AG-UI, um cliente OpenAPI para agentes HTTP Python), roteados através do Gateway em vez de no runtime.
Execute o Gerador
Seção intitulada “Execute o Gerador”- Instale o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - connection - Preencha os parâmetros obrigatórios
- Clique em
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:connectionVocê também pode realizar uma execução simulada para ver quais arquivos seriam alterados
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-runSelecione o projeto do site como origem e o projeto do Gateway como destino.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| sourceProject Obrigatório | string | - | O projeto de origem |
| targetProject Obrigatório | string | - | O projeto de destino para conectar |
| sourceComponent | string | - | O componente de origem para conectar (nome do componente, caminho relativo à raiz do projeto de origem, ou id do gerador). Use '.' para selecionar explicitamente o projeto como origem. |
| targetComponent | string | - | O componente de destino para conectar (nome do componente, caminho relativo à raiz do projeto de destino, ou id do gerador). Use '.' para selecionar explicitamente o projeto como destino. |
| preferInstallDependencies | boolean | true | Se deve preferir instalar dependências após a execução do gerador. Defina como false para adiar a instalação ao executar múltiplos geradores em lote (uma instalação ainda é executada se necessário para que os geradores subsequentes possam calcular o grafo de projetos Nx); instale uma vez no final. |
Saída do Gerador
Seção intitulada “Saída do Gerador”Para cada agente AG-UI exposto, os mesmos arquivos da conexão React para agente AG-UI são gerados (um AguiProvider, um hook useAgui<Agent> e um módulo de componente CopilotKit com tema), com o hook lendo a URL do Gateway da configuração de runtime:
Directorypackages/<website>/src
Directorycomponents
- AguiProvider.tsx Provedor CopilotKit registrando cada agente
Directorycopilot/ Componentes de chat com tema
- …
Directoryhooks
- useAgui<Agent>.tsx Conecta ao agente através da rota
/<targetName>/invocationsdo Gateway
- useAgui<Agent>.tsx Conecta ao agente através da rota
Para cada agente HTTP Python exposto, os mesmos arquivos da conexão React para agente Python são gerados (um cliente OpenAPI type-safe, hooks e um provedor), com a URL base do cliente roteada através do Gateway.
A URL do Gateway é registrada no namespace connection.gateways.<GatewayClassName> da Configuração de Runtime, então ela é publicada no runtime-config.json do site.
Concedendo acesso aos usuários do site
Seção intitulada “Concedendo acesso aos usuários do site”Para um Gateway IAM, conceda aos usuários autenticados do site permissão para invocá-lo (um Gateway Cognito não precisa de concessão — o navegador autentica com seu token bearer JWT em vez disso):
const identity = new UserIdentity(this, 'UserIdentity');new Website(this, 'Website');
const myGateway = new MyGateway(this, 'MyGateway');myGateway.addAgent(myAgent);myGateway.grantInvokeAccess(identity.identityPool.authenticatedRole);resource "aws_iam_policy" "gateway_invoke_policy" { name = "GatewayInvokePolicy"
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" "authenticated_gateway_access" { role = module.user_identity.authenticated_role_name policy_arn = aws_iam_policy.gateway_invoke_policy.arn}Desenvolvimento Local
Seção intitulada “Desenvolvimento Local”O target dev do site ganha uma dependência no target dev do projeto Gateway, que inicia o gateway local mais todos os agentes anexados. A configuração de runtime do site é sobrescrita no modo local-dev para apontar a URL do Gateway para o gateway local, então o navegador exercita as mesmas rotas /<targetName>/invocations localmente:
pnpm nx dev <website-name>yarn nx dev <website-name>npx nx dev <website-name>bunx nx dev <website-name>Conectando novos agentes
Seção intitulada “Conectando novos agentes”O gerador conecta o site aos agentes anexados ao Gateway no momento em que é executado. Após anexar outro agente ao Gateway, execute novamente o gerador de conexão para gerar seu cliente de site — clientes existentes permanecem intocados.