Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Contrato de protocolo HTTP
Comprenda los requisitos para implementar el protocolo HTTP en la aplicación de su agente. Utilice el protocolo HTTP para crear puntos de enlace directos de la API REST para los request/response patrones tradicionales y puntos de WebSocket enlace para las conexiones de streaming bidireccionales en tiempo real.
nota
Los puntos de enlace HTTP (/invocations) y WebSocket (/ws) se pueden implementar en el mismo contenedor mediante el puerto 8080, lo que permite la implementación de un solo agente para admitir tanto las interacciones de API tradicionales como la transmisión bidireccional en tiempo real.
Para ver un ejemplo de código, consulte Introducción a la CLI. AgentCore
Temas
Requisitos de contenedores
Su agente debe implementarse como una aplicación en contenedores que cumpla con estas especificaciones:
-
Host:
0.0.0.0 -
Puerto:
8080- Puerto estándar para la comunicación con los agentes HTTP-based -
Plataforma: contenedor ARM64: necesario para la compatibilidad con el AgentCore entorno de ejecución
Requisitos de ruta
/invocations - POST
Este es el punto final principal de interacción del agente con entrada y JSON/SSE salida JSON.
Finalidad
Recibe las solicitudes entrantes de los usuarios o las aplicaciones y las procesa mediante la lógica empresarial de su agente
Casos de uso
El /invocations punto final cumple varios propósitos clave:
-
Interacciones y conversaciones directas con los usuarios
-
Integraciones de API con sistemas externos
-
Procesamiento por lotes de múltiples solicitudes
-
Real-time transmisión de respuestas para operaciones de larga duración
Ejemplo de formato de solicitud
Content-Type: application/json { "prompt": "What's the weather today?" }
Formatos de respuesta
Su agente puede responder con cualquiera de los siguientes formatos, según el caso de uso:
Respuesta JSON (sin transmisión)
Finalidad
Proporciona respuestas completas a las solicitudes que se pueden procesar rápidamente
Casos de uso
Las respuestas JSON son ideales para:
-
Escenarios sencillos de preguntas y respuestas
-
Cálculos deterministas
-
Búsquedas rápidas de datos
-
Confirmaciones de estado
Ejemplo de formato de respuesta JSON
Content-Type: application/json { "response": "Your agent's response here", "status": "success" }
Respuesta SSE (transmisión)
Server-sent los eventos (SSE) le permiten ofrecer respuestas de transmisión en tiempo real. Para obtener más información, consulte la especificación de
Finalidad
Permite la entrega de respuestas incrementales para operaciones de larga duración y mejora la experiencia del usuario
Casos de uso
Las respuestas de la SSE son ideales para:
-
Real-time experiencias conversacionales
-
Generación progresiva de contenido
-
Long-running cálculos con resultados intermedios
-
Actualizaciones y fuentes de datos en tiempo real
Ejemplo de formato de respuesta SSE
Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}
/ws - WebSocket (Opcional)
Este es el punto final de WebSocket conexión principal para la comunicación bidireccional en tiempo real.
Finalidad
Acepta solicitudes de WebSocket actualización y mantiene conexiones persistentes para las interacciones entre los agentes de streaming
Casos de uso
El /ws punto final cumple varios propósitos clave:
-
Real-time interfaces conversacionales
-
Sesiones de agentes interactivas con comentarios inmediatos
-
Procesamiento de datos en streaming con comunicación bidireccional
Establecimiento de conexión
WebSocket las conexiones comienzan con una solicitud de actualización HTTP:
Ejemplo de solicitud de actualización 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
Ejemplo de respuesta WebSocket de actualización
HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Requisitos de manejo de mensajes
Su WebSocket terminal debe gestionar:
-
Aceptación de la conexión: llame
await websocket.accept()para establecer la conexión -
Recepción de mensajes: admite tipos de mensajes binarios o de texto según los requisitos de su aplicación
-
Procesamiento de mensajes: gestione los mensajes entrantes de acuerdo con la lógica empresarial de su agente
-
Envío de respuestas: envíe las respuestas apropiadas mediante
send_text()osend_bytes() -
Ciclo de vida de la conexión: administre el establecimiento, el mantenimiento y la terminación de la conexión
Formatos de mensajes
Mensajes de texto
Formato JSON (recomendado)
Finalidad
Intercambio estructurado de datos para las interacciones entre agentes
Ejemplo de mensaje
{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }
Ejemplo de respuesta
{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Formato de texto plano
Finalidad
Comunicación simple basada en texto
Ejemplo
Hello, can you help me with this question?
Mensajes binarios
Finalidad
Soporte para datos no textuales, como imágenes, audio u otros formatos binarios
Casos de uso
Los mensajes binarios admiten varios escenarios:
-
Multi-modal interacciones entre agentes
-
Cargas y descargas de archivos
-
Transmisión de datos comprimidos
-
Datos de protocolo binario
Requisitos de manejo
La gestión de mensajes binarios requiere:
-
Uso
receive_bytes()ysend_bytes()métodos -
Implemente un procesamiento de datos binarios adecuado
-
Considere las limitaciones de tamaño de los mensajes
Ciclo vital de conexión
Establecimiento de la conexión
-
HTTP Handshake: el cliente envía una solicitud de WebSocket actualización
-
Respuesta de actualización: el agente acepta y devuelve 101 protocolos de conmutación
-
WebSocket Activo: comienza la comunicación bidireccional
-
Vinculación de sesión: asocia la conexión con el identificador de sesión
Intercambio de mensajes
-
Bucle continuo: implemente un ciclo de escucha de mensajes
-
Procesamiento de mensajes: gestione los mensajes entrantes de forma asincrónica
-
Generación de respuestas: envíe las respuestas apropiadas
-
Gestión de errores: administre las excepciones y los problemas de conexión
/ping - OBTENER
Finalidad
Verifica que su agente esté operativo y listo para atender las solicitudes
Casos de uso
El /ping punto final cumple varios propósitos clave:
-
Monitorización del servicio para detectar y solucionar problemas
-
Recuperación automatizada a través de AWS la infraestructura gestionada
Formato de las respuestas
Devuelve un código de estado que indica el estado de su agente:
-
Content-Type :
application/json -
Código de estado HTTP: en caso
200de estado correcto, códigos de error apropiados para estados en mal estado
Si tu agente necesita procesar tareas en segundo plano, puedes indicarlo con el /ping estado. Si el estado del ping esHealthyBusy, la sesión de ejecución se considera activa.
Ejemplo de formato de respuesta de ping
{ "status": "<status_value>" }
- estado (obligatorio)
-
Healthy- El sistema está listo para aceptar nuevos trabajosHealthyBusy- El sistema está operativo pero actualmente está ocupado con tareas asincrónicas. Mientras el estado seaHealthyBusy, la sesión de ejecución se considera activa y se mantiene activa. - time_of_last_update (opcional)
-
Marca de tiempo de Unix (en segundos) de cuándo se modificó por última vez.
statusConfigúrala solo en caso de un cambio de estado real.aviso
No lo ajuste
time_of_last_updatea la hora actual en cada ping. Una marca de tiempo que avanza en cada ping indica un cambio de estado continuo, lo que evita que se agote el tiempo de espera de la sesión inactiva. De este modo, las sesiones persisten hastaMaxLifetimeagotar la cuota de sesión. Si omites el campo, la plataforma registra los cambios de estado por sí sola. Si utilizas el AgentCore SDK de Bedrock, la respuesta de ping se gestionará automáticamente.
Gestión de errores
A diferencia del A2A, el MCP y AG-UI los protocolos, el protocolo HTTP no envuelve los errores en un sobre específico del protocolo. El servicio devuelve los errores directamente como respuestas HTTP nativas: el código de estado HTTP refleja la excepción y el encabezado de la x-amzn-ErrorType respuesta lleva el nombre de la excepción. En la siguiente tabla se enumeran las excepciones que puede recibir.
| Código de error HTTP | Excepción de tiempo de ejecución (x-amzn-ErrorType) |
Description (Descripción) |
|---|---|---|
|
400 |
ValidationException |
Parámetros o datos de solicitud no válidos |
|
401 |
UnauthorizedException |
Se requiere autenticación o las credenciales no son válidas (OAuth-configured agentes) |
|
402 |
ServiceQuotaExceededException |
La solicitud superaría una cuota de servicio |
|
403 |
AccessDeniedException |
Permisos insuficientes para la operación solicitada |
|
404 |
ResourceNotFoundException |
El recurso solicitado no existe |
|
409 |
ConflictException |
Conflicto de recursos: el recurso ya existe |
|
409 |
RetryableConflictException |
La sesión está en curso, inténtelo de nuevo |
|
424 |
RuntimeClientError |
El contenedor de tu agente arrojó un error de 4xx o 5xx. Comprueba tus registros CloudWatch |
|
429 |
ThrottlingException |
Demasiadas solicitudes: se ha superado el límite de frecuencia de solicitudes |
|
500 |
InternalServerException |
Se ha producido un error inesperado al procesar la solicitud |
ConflictExceptiony RetryableConflictException ambos devuelven HTTP 409. El x-amzn-ErrorType encabezado y el mensaje los distinguen. El servicio devuelve RetryableConflictException (Session operation in progress, please retry) cuando una segunda operación se dirige a una sesión que el servicio está aprovisionando o desactivando. Esta condición es transitoria y se puede volver a intentar. Vuelva a intentarlo con un breve retroceso exponencial. Los AWS SDK reintentan automáticamente esta excepción cuando están habilitados los reintentos predeterminados. Si llamas a la API directamente sin un AWS SDK, debes volver a intentarlo tú mismo.
nota
ServiceQuotaExceededExceptiondevuelve el HTTP 402 en esta superficie HTTP nativa. En el protocolo A2A, devuelve HTTP 429, el mismo estado HTTP que el de Throttling. En el protocolo MCP, comparte el código de JSON-RPC error de limitación (-32003) pero devuelve HTTP 200. En AG-UI él usa un código SERVICE_QUOTA_EXCEEDED SSE distinto y devuelve HTTP 429.
Respuestas de autenticación de OAuth
OAuth-configured los agentes siguen los estándares de autenticación RFC 6749 (OAuth 2.0).
401 sin autorización
Se devuelve cuando falta el encabezado de autorización.
Incluye WWW-Authenticate encabezado:
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 los agentes devuelven el HTTP 403 con un ACCESS_DENIED error y no incluyen WWW-Authenticate los encabezados.