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.
Tópicos
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
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()ousend_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()esend_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
-
HTTP Handshake: o cliente envia uma solicitação de WebSocket atualização
-
Resposta de atualização: o agente aceita e retorna 101 protocolos de comutação
-
WebSocket Ativo: a comunicação bidirecional começa
-
Vinculação de sessão: associar conexão ao identificador de sessão
Troca de mensagens
-
Loop contínuo: implemente o loop de escuta de mensagens
-
Processamento de mensagens: manipule as mensagens recebidas de forma assíncrona
-
Geração de respostas: envie as respostas apropriadas
-
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:
200para 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 trabalhosHealthyBusy- 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.
statusDefina-o somente em uma mudança de status real.Atenção
Não
time_of_last_updatedefina 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éMaxLifetimeesgotar 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).
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.