View a markdown version of this page

Contrato de protocolo HTTP - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Contrato de protocolo HTTP

Entenda os requisitos para implementar o protocolo HTTP em seu aplicativo de agente. Use o protocolo HTTP para criar endpoints diretos da API REST para request/response padrões tradicionais e WebSocket endpoints para conexões de streaming bidirecionais em tempo real.

nota

Os endpoints HTTP (/invocations) e WebSocket (/ws) podem ser implantados no mesmo contêiner usando a porta 8080, permitindo que a implementação de um único agente ofereça suporte às interações tradicionais da API e ao streaming bidirecional em tempo real.

Por exemplo, código, consulte Começar a usar a AgentCore CLI.

Requisitos de container

Seu agente deve ser implantado como um aplicativo em contêiner que atenda às seguintes especificações:

  • Host: 0.0.0.0

  • Porta: 8080 - Porta padrão para comunicação com HTTP-based agentes

  • Plataforma: contêiner ARM64 - necessário para compatibilidade com o AgentCore ambiente Runtime

Requisitos de caminho

/invocações - POST

Esse é o principal endpoint de interação do agente com entrada e JSON/SSE saída JSON.

Finalidade

Recebe solicitações de usuários ou aplicativos e as processa por meio da lógica de negócios do seu agente

Casos de uso

O /invocations endpoint serve a vários propósitos principais:

  • Interações e conversas diretas do usuário

  • Integrações de API com sistemas externos

  • Processamento em lote de várias solicitações

  • Real-time respostas de streaming para operações de longa duração

Exemplo de formato de solicitação

Content-Type: application/json { "prompt": "What's the weather today?" }

Formatos de resposta

Seu agente pode responder usando um dos seguintes formatos, dependendo do caso de uso:

Resposta JSON (sem streaming)

Finalidade

Fornece respostas completas para solicitações que podem ser processadas rapidamente

Casos de uso

As respostas JSON são ideais para:

  • Cenários simples de resposta a perguntas

  • Cálculos determinísticos

  • Pesquisas rápidas de dados

  • Confirmações de status

Exemplo de formato de resposta JSON

Content-Type: application/json { "response": "Your agent's response here", "status": "success" }

Resposta SSE (streaming)

Server-sent os eventos (SSE) permitem que você forneça respostas de streaming em tempo real. Para obter mais informações, consulte a especificação de Server-sent eventos.

Finalidade

Permite a entrega incremental de respostas para operações de longa duração e uma melhor experiência do usuário

Casos de uso

As respostas do SSE são ideais para:

  • Real-time experiências de conversação

  • Geração progressiva de conteúdo

  • Long-running cálculos com resultados intermediários

  • Feeds e atualizações de dados ao vivo

Exemplo de formato de resposta SSE

Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}

/ws - WebSocket (Opcional)

Esse é o principal terminal de WebSocket conexão para comunicação bidirecional em tempo real.

Finalidade

Aceita solicitações de WebSocket upgrade e mantém conexões persistentes para interações com agentes de streaming

Casos de uso

O /ws endpoint serve a vários propósitos principais:

  • Real-time interfaces conversacionais

  • Sessões interativas de agentes com feedback imediato

  • Processamento de dados de streaming com comunicação bidirecional

estabelecimento de conexão

WebSocket as conexões começam com uma solicitação de atualização HTTP:

Exemplo de solicitação de atualização de HTTP

GET /ws HTTP/1.1 Host: agent-endpoint Connection: Upgrade Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: session-uuid

Exemplo de resposta de WebSocket atualização

HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Requisitos de tratamento de mensagens

Seu WebSocket endpoint deve lidar com:

  • Aceitação da conexão: Ligue await websocket.accept() para estabelecer a conexão

  • Recepção de mensagens: suporte tipos de mensagens de texto ou binárias com base nos requisitos do seu aplicativo

  • Processamento de mensagens: gerencie as mensagens recebidas de acordo com a lógica comercial do seu agente

  • Envio de respostas: envie respostas apropriadas usando send_text() ou send_bytes()

  • Ciclo de vida da conexão: gerencie o estabelecimento, a manutenção e o encerramento da conexão

Formatos de mensagem

Mensagens de texto
Formato JSON (recomendado)

Finalidade

Troca de dados estruturada para interações com agentes

Exemplo de mensagem

{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }

Exemplo de resposta

{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Formato de texto simples

Finalidade

Comunicação simples baseada em texto

Exemplo

Hello, can you help me with this question?
Mensagens binárias

Finalidade

Suporte para dados não textuais, como imagens, áudio ou outros formatos binários

Casos de uso

As mensagens binárias suportam vários cenários:

  • Multi-modal interações com agentes

  • Uploads e downloads de arquivos

  • Transmissão de dados compactados

  • Dados de protocolo binário

Requisitos de manipulação

O tratamento de mensagens binárias requer:

  • Uso receive_bytes() e send_bytes() métodos

  • Implemente o processamento de dados binários apropriado

  • Considere as limitações do tamanho da mensagem

Ciclo de vida da conexão

estabelecimento de conexão
  1. HTTP Handshake: o cliente envia uma solicitação de WebSocket atualização

  2. Resposta de atualização: o agente aceita e retorna 101 protocolos de comutação

  3. WebSocket Ativo: a comunicação bidirecional começa

  4. Vinculação de sessão: associar conexão ao identificador de sessão

Troca de mensagens
  1. Loop contínuo: implemente o loop de escuta de mensagens

  2. Processamento de mensagens: manipule as mensagens recebidas de forma assíncrona

  3. Geração de respostas: envie as respostas apropriadas

  4. Tratamento de erros: gerencie exceções e problemas de conexão

/ping - OBTENHA

Finalidade

Verifica se seu agente está operacional e pronto para lidar com solicitações

Casos de uso

O /ping endpoint serve a vários propósitos principais:

  • Monitoramento de serviços para detectar e corrigir problemas

  • Recuperação automatizada por meio AWS da infraestrutura gerenciada

Formato de resposta

Retorna um código de status indicando a saúde do seu agente:

  • Content-Type : application/json

  • Código de status HTTP: 200 para códigos de erro saudáveis e apropriados para estados não íntegros

Se seu agente precisar processar tarefas em segundo plano, você poderá indicá-las com o /ping status. Se o status do ping forHealthyBusy, a sessão de tempo de execução será considerada ativa.

Exemplo de formato de resposta Ping

{ "status": "<status_value>" }
status (obrigatório)

Healthy- O sistema está pronto para aceitar novos trabalhos

HealthyBusy- O sistema está operacional, mas atualmente está ocupado com tarefas assíncronas. Enquanto o status forHealthyBusy, a sessão de tempo de execução é considerada ativa e mantida ativa.

time_of_last_update (opcional)

Carimbo de data/hora Unix (em segundos) de quando a última alteração foi feita. status Defina-o somente em uma mudança de status real.

Atenção

Não time_of_last_update defina a hora atual em cada ping. Um carimbo de data/hora que avança a cada ping sinaliza uma mudança contínua de status, o que impede que o tempo limite da sessão ociosa seja acionado — as sessões então persistem até MaxLifetime esgotar sua cota de sessão. Se você omitir o campo, a plataforma rastreará as alterações de status sozinha. Se você usa o Bedrock AgentCore SDK, a resposta do ping é tratada para você.

Tratamento de erros

Diferentemente do A2A, do MCP e dos AG-UI protocolos, o protocolo HTTP não agrupa os erros em um envelope específico do protocolo. O serviço retorna erros diretamente como respostas HTTP nativas: o código de status HTTP reflete a exceção e o cabeçalho da x-amzn-ErrorType resposta carrega o nome da exceção. A tabela a seguir lista as exceções que você pode receber.

Código de erro HTTP Exceção de tempo de execução (x-amzn-ErrorType) Description

400

ValidationException

Dados ou parâmetros de solicitação inválidos

401

UnauthorizedException

Autenticação necessária ou credenciais inválidas (agentes) OAuth-configured

402

ServiceQuotaExceededException

A solicitação excederia uma cota de serviço

403

AccessDeniedException

Permissões insuficientes para a operação solicitada

404

ResourceNotFoundException

O recurso solicitado não existe

409

ConflictException

Conflito de recursos - O recurso já existe

409

RetryableConflictException

Operação da sessão em andamento, tente novamente

424

RuntimeClientError

O contêiner do seu agente retornou um erro 4xx ou 5xx - verifique seus registros CloudWatch

429

ThrottlingException

Muitas solicitações - o limite da taxa de solicitação foi excedido

500

InternalServerException

Ocorreu um erro inesperado ao processar a solicitação

ConflictExceptione RetryableConflictException ambos retornam HTTP 409. O x-amzn-ErrorType cabeçalho e a mensagem os distinguem. O serviço retorna RetryableConflictException (Session operation in progress, please retry) quando uma segunda operação tem como alvo uma sessão que o serviço está provisionando ou desativando. Essa condição é transitória e pode ser repetida. Tente novamente com um pequeno recuo exponencial. Os AWS SDKs repetem automaticamente essa exceção quando as novas tentativas padrão estão habilitadas. Se você chamar a API diretamente sem um AWS SDK, você mesmo deverá tentar novamente.

nota

ServiceQuotaExceededExceptionretorna HTTP 402 nessa superfície HTTP nativa. No protocolo A2A, ele retorna HTTP 429, o mesmo status HTTP da limitação. No protocolo MCP, ele compartilha o código de JSON-RPC erro de limitação (-32003), mas retorna HTTP 200. AG-UI Nele usa um código SERVICE_QUOTA_EXCEEDED SSE distinto e retorna HTTP 429.

Respostas de autenticação OAuth

OAuth-configured os agentes seguem os padrões de autenticação RFC 6749 (OAuth 2.0). Quando a autenticação está ausente, o serviço retorna uma resposta 401 não autorizada com um WWW-Authenticate cabeçalho (de acordo com a RFC 7235), permitindo que os clientes descubram os endpoints do servidor de autorização por meio da API. GetRuntimeProtectedResourceMetadata

401 Não autorizado

Retornado quando o cabeçalho de autorização está ausente.

Inclui WWW-Authenticate cabeçalho:

WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
nota

SigV4-configured os agentes retornam HTTP 403 com um ACCESS_DENIED erro e não incluem WWW-Authenticate cabeçalhos.