Pular para o conteúdo

AgentCore Gateway para AgentCore Gateway

O gerador connection pode registrar um AgentCore Gateway como destino de outro AgentCore Gateway. Isso permite compor gateways hierarquicamente — por exemplo, um gateway de nível de equipe agregando vários gateways de domínio, cada um dos quais serve seus próprios servidores MCP.

Uma vez conectado, o Gateway de origem agrega as ferramentas do Gateway de destino em seu único endpoint MCP. Como o Gateway de destino já prefixa suas ferramentas com seus próprios nomes de destino, as ferramentas aparecem através do Gateway de origem como <gateway-target-name>___<target-name>___<tool-name> — cada gateway na cadeia adiciona um prefixo. Ambos os gateways avaliam suas próprias políticas Cedar: o Gateway de origem autoriza o chamador para a ação prefixada, então o Gateway de destino autoriza a função de execução do Gateway de origem para a ação interna.

Antes de usar este gerador, certifique-se de ter:

  1. Dois projetos agentcore-gateway

Ambos os gateways devem ter protocol: mcp, e o gateway de destino deve ter auth: iam — o gateway de origem invoca o destino assinando com sua própria função de execução, então apenas a autenticação de entrada do destino precisa ser IAM. O gerador valida isso, e também rejeita conexões que criariam um ciclo entre gateways, o que de outra forma recorreria infinitamente em tools/list.

  1. Instale o Nx Console VSCode Plugin se ainda não o fez
  2. Abra o console Nx no VSCode
  3. Clique em Generate (UI) na seção "Common Nx Commands"
  4. Procure por @aws/nx-plugin - connection
  5. Preencha os parâmetros obrigatórios
    • Clique em Generate

    Selecione o projeto Gateway agregador como origem e o Gateway a ser agregado 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.

    O gerador conecta projetos existentes em vez de emitir novos arquivos de origem. Os seguintes arquivos são modificados:

    • Directorypackages/<source-gateway>
      • project.json <source-gateway>-serve-local ganha uma dependência no <target-gateway>-serve-local do gateway de destino
      • serve-local.ts ATTACHED_MCP_SERVERS atualizado para que o gateway local agregue o gateway de destino

    O destino dev do projeto Gateway de origem ganha uma dependência no destino dev do Gateway de destino, então executar o Gateway de origem localmente também inicia o gateway de destino (e, transitivamente, todos os servidores MCP anexados a ele). O gateway de destino também é registrado no local-dev.ts do projeto Gateway de origem para que o gateway local agregue suas ferramentas.

    O gerador não pode conectar automaticamente o destino do gateway à sua infraestrutura porque não sabe qual stack ou módulo instancia os Gateways. Adicione uma única chamada a gateway.addGateway(targetGateway) você mesmo.

    Na stack onde você instancia os Gateways, registre o gateway de destino como um destino do gateway de origem:

    packages/infra/src/stacks/application-stack.ts
    const innerGateway = new InnerGateway(this, 'InnerGateway');
    const outerGateway = new OuterGateway(this, 'OuterGateway');
    // Register the inner gateway as a target of the outer gateway. The target
    // name defaults to the inner gateway's `gatewayName` (its class name in
    // kebab-case, e.g. `InnerGateway` -> `inner-gateway`).
    outerGateway.addGateway(innerGateway);

    O nome do destino do Gateway (o gatewayName do gateway de destino por padrão) prefixa os nomes de ação Cedar no gateway de origem — o formato da ação é AgentCore::Action::"<gatewayTargetName>___<targetName>___<toolName>". Veja a seção Escrevendo Políticas. Mantenha o nome do destino curto e estável; alterá-lo posteriormente invalida quaisquer políticas Cedar que referenciem o nome antigo.

    Para substituir o nome do destino padrão, passe gatewayTargetName:

    outerGateway.addGateway(innerGateway, { gatewayTargetName: 'inner' });

    O construto concede à função de execução do gateway de origem acesso bedrock-agentcore:InvokeGateway ao gateway de destino, e configura o destino com iamCredentialProvider.service = 'bedrock-agentcore' para que o gateway de origem assine chamadas de saída usando sua própria função de execução. O destino é criado após o gateway de destino e todos os seus próprios destinos, já que o AgentCore busca as ferramentas do destino durante a criação.

    Cada gateway na cadeia avalia seu próprio conjunto de políticas:

    1. O gateway de origem avalia o chamador original (por exemplo, a função de execução de um agente) contra a ação prefixada, por exemplo AgentCore::Action::"inner-gateway___my-mcp___add".
    2. O gateway de destino avalia a função de execução do gateway de origem contra a ação interna, por exemplo AgentCore::Action::"my-mcp___add".

    Isso significa que uma chamada de ferramenta através de uma cadeia de gateway deve ser permitida em cada salto. O permit-all.cedar padrão permite qualquer chamador na mesma conta AWS, o que inclui a função do gateway de origem; se você escrever políticas mais restritas no gateway de destino, lembre-se de que o principal que ele vê é a função do gateway de origem, não o chamador original.

    Executar o Gateway de origem localmente com:

    Terminal window
    pnpm nx <source-gateway-name>-dev

    inicia o gateway de origem local, o gateway de destino local e todos os servidores MCP anexados a qualquer um deles, cada um em sua porta local atribuída. Os nomes das ferramentas são prefixados em cada salto exatamente como implantado (<gateway-target-name>___<target-name>___<tool-name>), então os prompts do agente e os nomes de ação Cedar permanecem consistentes entre execuções locais e implantadas.

    local chame o Gateway implantado. ::: lantado. :::