View a markdown version of this page

Contrato de protocolo A2A - 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 A2A

El contrato de protocolo A2A define los requisitos para implementar la comunicación entre agentes en Amazon Bedrock Runtime. AgentCore Este contrato especifica los requisitos técnicos, los puntos finales y los patrones de comunicación que debe implementar su servidor A2A.

Para ver un ejemplo de código, consulte Implementación de servidores A2A en tiempo de ejecución. AgentCore

Requisitos de implementación del protocolo

Su servidor A2A debe implementar estos requisitos de protocolo específicos:

  • Transporte: JSON-RPC 2.0 a través de HTTP: permite una comunicación estandarizada de agente a agente

  • Administración de sesiones: la plataforma agrega automáticamente el X-Amzn-Bedrock-AgentCore-Runtime-Session-Id encabezado para el aislamiento de la sesión

  • Detección de agentes: se debe proporcionar la tarjeta de agente en el /.well-known/agent-card.json punto final

Requisitos de contenedores

Su servidor A2A debe implementarse como una aplicación en contenedores que cumpla con estas especificaciones:

  • Host: 0.0.0.0

  • Puerto: 9000 - Puerto estándar para la comunicación con el servidor A2A (diferente de los protocolos HTTP y MCP)

  • Plataforma: contenedor ARM64: necesario para la compatibilidad con el entorno de ejecución de AWS Amazon Bedrock AgentCore

Requisitos de ruta

/- PUBLICAR

Finalidad

Recibe los mensajes de la JSON-RPC versión 2.0 y los procesa a través de las capacidades de su agente. Transfiere completamente la carga útil de la InvokeAgentRuntime API con mensajes de protocolo A2A

Casos de uso

El punto final raíz cumple varios propósitos clave:

  • Agent-to-agent comunicación y colaboración

  • Multi-step flujos de trabajo de agentes y delegación de tareas

  • Real-time experiencias de conversación entre agentes

  • Invocación de herramientas y uso compartido de capacidades

Formato de las solicitudes

Los servidores A2A esperan solicitudes con formato JSON-RPC 2.0:

Content-Type: application/json { "jsonrpc": "2.0", "id": "req-001", "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "kind": "text", "text": "Your message content here" } ], "messageId": "unique-message-id" } } }

Formato de las respuestas

Los servidores A2A responden con respuestas con formato JSON-RPC 2.0 que contienen tareas y artefactos:

Content-Type: application/json { "jsonrpc": "2.0", "id": "req-001", "result": { "artifacts": [ { "artifactId": "unique-artifact-id", "name": "agent_response", "parts": [ { "kind": "text", "text": "Agent response content" } ] } ] } }

/.well- -card.json - OBTENER known/agent

Finalidad

Proporciona los metadatos de la tarjeta de agente para la detección de agentes y la publicidad de sus capacidades

Casos de uso

El punto final de la tarjeta de agente cumple varios propósitos clave:

  • Detección de agentes en sistemas con varios agentes

  • Anuncio de capacidades y habilidades

  • Especificación del requisito de autenticación

  • Configuración del punto final del servicio

Formato de las respuestas

Devuelve los metadatos de JSON que describen la identidad y las capacidades del agente:

Content-Type: application/json { "name": "Agent Name", "description": "Agent description and purpose", "version": "1.0.0", "url": "https://bedrock-agentcore.region.amazonaws.com/runtimes/agent-arn/invocations/", "protocolVersion": "0.3.0", "preferredTransport": "JSONRPC", "capabilities": { "streaming": true }, "defaultInputModes": ["text"], "defaultOutputModes": ["text"], "skills": [ { "id": "skill-id", "name": "Skill Name", "description": "Skill description and capabilities", "tags": [] } ] }

/ping - OBTENER

Finalidad

Verifica que su servidor A2A esté operativo y listo para atender las solicitudes

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

{ "status": "Healthy" }

statuses obligatorio y es uno de Healthy oHealthyBusy. Mientras el estado seaHealthyBusy, la sesión de ejecución se mantiene activa.

Se puede incluir un time_of_last_update campo opcional (una marca de tiempo de Unix en segundos) para indicar cuándo se modificó por última vez. status

aviso

No establezca 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 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.

Requisitos de autenticación

Los servidores A2A admiten varios mecanismos de autenticación:

Tokens portadores de OAuth 2.0

Para la autenticación de clientes A2A, incluye el token del portador en los encabezados de las solicitudes:

Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>

Autenticación Sigv4

La autenticación AWS Sigv4 estándar también es compatible con el acceso programático.

Gestión de errores

Los servidores A2A devuelven los errores como respuestas de error estándar JSON-RPC 2.0. La siguiente tabla asigna cada excepción de tiempo de ejecución a su código de JSON-RPC error, código de estado HTTP y mensaje. Algunas excepciones comparten un código de JSON-RPC error pero devuelven mensajes diferentes, por lo que aparecen en filas independientes.

JSON-RPC Código de error Excepción de ejecución Código de error HTTP JSON-RPC Mensaje de error

No aplicable

AccessDeniedException

403

Acceso denegado (devuelto como un error HTTP estándar, no como un JSON-RPC error)

-32051

ResourceNotFoundException

404

Recurso no encontrado: el recurso solicitado no existe

-32052

ValidationException

400

Error de validación: datos de solicitud no válidos

-32053

ThrottlingException

429

Se ha superado el límite de frecuencia: demasiadas solicitudes

-32053

ServiceQuotaExceededException

429

Se ha superado el límite de frecuencia: demasiadas solicitudes

-32054

ConflictException

409

Conflicto de recursos: el recurso ya existe

-32054

RetryableConflictException

409

La sesión está en curso, inténtelo de nuevo

-32055

RuntimeClientError

424

Error del cliente en tiempo de ejecución: compruebe sus CloudWatch registros para obtener más información

-32603

¿Alguna otra excepción

500

Error interno: se produjo un error inesperado al procesar la solicitud

ConflictExceptiony RetryableConflictException ambos usan JSON-RPC un código de error -32054 (HTTP 409). Sus mensajes 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. La persona que llama debe volver a intentarlo con un breve retraso exponencial, ya que los clientes A2A no lo reintentan automáticamente.

nota

A diferencia de la convención de la especificación A2A de generar JSON-RPC errores en una respuesta HTTP 200, AgentCore Runtime devuelve el código de estado HTTP real (por ejemplo, 409 o 404). Analiza el JSON-RPC error cuerpo incluso en las respuestas que no sean 2xx para que tu cliente no pierda el código de error (por ejemplo-32054) ni el Session operation in progress, please retry mensaje que necesita para volver a intentarlo.

Ejemplo de respuesta de error:

{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32052, "message": "Validation error - Invalid request data" } }

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 No autorizado: falta la autenticación

HTTP/1.1 401 Unauthorized 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.