View a markdown version of this page

Contrato de protocolo HTTP - Base amazónica AgentCore

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

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 Server-sent eventos.

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() o send_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() y send_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
  1. HTTP Handshake: el cliente envía una solicitud de WebSocket actualización

  2. Respuesta de actualización: el agente acepta y devuelve 101 protocolos de conmutación

  3. WebSocket Activo: comienza la comunicación bidireccional

  4. Vinculación de sesión: asocia la conexión con el identificador de sesión

Intercambio de mensajes
  1. Bucle continuo: implemente un ciclo de escucha de mensajes

  2. Procesamiento de mensajes: gestione los mensajes entrantes de forma asincrónica

  3. Generación de respuestas: envíe las respuestas apropiadas

  4. 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 200 de 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 trabajos

HealthyBusy- 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. status Configúrala solo en caso de un cambio de estado real.

aviso

No lo ajuste time_of_last_update a 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 hasta MaxLifetime agotar 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). Cuando falta la autenticación, el servicio devuelve una respuesta no autorizada 401 con un WWW-Authenticate encabezado (según la RFC 7235), lo que permite a los clientes descubrir los puntos finales del servidor de autorización a través de la API. GetRuntimeProtectedResourceMetadata

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.