View a markdown version of this page

Contrato de protocolo HTTP - Amazon Bedrock AgentCore

Contrato de protocolo HTTP

Comprenda los requisitos para implementar el protocolo HTTP en su aplicación de agente. Utilice el protocolo HTTP para crear puntos finales de la API REST directos para los request/response patrones tradicionales y puntos de WebSocket enlace para 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 código de ejemplo, consulte Comenzar con la AgentCore CLI.

Requisitos de contenedores

Su agente debe implementarse como una aplicación contenerizada 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 Runtime

Requisitos de ruta

/invocations - POST

Este es el punto final de interacción del agente principal con entrada y JSON/SSE salida de JSON.

Finalidad

Recibe las solicitudes entrantes de los usuarios o las aplicaciones y las procesa según 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 mediante uno 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 streaming en tiempo real. Para obtener más información, consulte la especificación de Server-sent los eventos.

Finalidad

Permite ofrecer una respuesta incremental para operaciones de larga duración y mejorar la experiencia del usuario

Casos de uso

Las respuestas SSE son ideales para:

  • Real-time experiencias conversacionales

  • Generación progresiva de contenido

  • Long-running cálculos con resultados intermedios

  • Actualizaciones y actualizaciones 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 interactivas para agentes 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 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: Support tipos de mensajes de texto o binarios 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 utilizando send_text() o send_bytes()

  • Ciclo de vida de la conexión: gestione el establecimiento, el mantenimiento y la terminación de la conexión

Formatos de mensajes

Mensajes de texto
Formato JSON (recomendado)

Finalidad

Intercambio de datos estructurado para las interacciones entre los 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 sencilla basada en texto

Ejemplo

Hello, can you help me with this question?
Mensajes binarios

Finalidad

Support 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

El manejo de mensajes binarios requiere:

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

  • Implemente el procesamiento de datos binarios adecuado

  • Tenga en cuenta las limitaciones de tamaño del mensaje

Ciclo de vida de

Establecimiento de 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 Activa: comienza la comunicación bidireccional

  4. Vinculación de sesión: asocie la conexión al 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 asíncrona

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

  4. Gestión de errores: gestione las excepciones y los problemas de conexión

/ping - OBTENER

Finalidad

Verifica que su agente esté operativo y preparado para gestionar las solicitudes

Casos de uso

El /ping punto final cumple varios propósitos clave:

  • Supervisión del servicio para detectar y solucionar problemas

  • Recuperación automatizada a través AWS de una infraestructura gestionada

Formato de las respuestas

Devuelve un código de estado que indica el estado de salud de su agente:

  • Content-Type : application/json

  • Código de estado HTTP: 200 para estados en buen estado, códigos de error apropiados para estados en mal estado

Si su agente necesita procesar tareas en segundo plano, puede indicarlo con el /ping estado. Si el estado del ping esHealthyBusy, la sesión en tiempo de ejecución se considera activa.

Ejemplo de formato de respuesta de ping

{ "status": "<status_value>" }
estado (obligatorio)

Healthy- El sistema está preparado para aceptar nuevos trabajos

HealthyBusy- El sistema está operativo pero actualmente está ocupado con tareas asíncronas. Mientras el estado esHealthyBusy, la sesión en tiempo 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úrelo solo en caso de un cambio de estado real.

aviso

No configure time_of_last_update la hora actual en cada ping. Una marca de tiempo que avanza en cada ping indica un cambio de estado continuo, lo que impide 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 este campo, la plataforma registra los cambios de estado por sí misma. Si utilizas el AgentCore SDK de Bedrock, la respuesta al ping se gestiona automáticamente.

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 401 no autorizada 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 encabezados.