View a markdown version of this page

Contrato de protocolo A2A - Amazon Bedrock AgentCore

Contrato de protocolo A2A

O contrato de protocolo A2A define os requisitos para implementar a comunicação entre agentes no Amazon Bedrock Runtime. AgentCore Este contrato especifica os requisitos técnicos, os endpoints e os padrões de comunicação que seu servidor A2A deve implementar.

Por exemplo de código, consulte Implantar servidores A2A no AgentCore Runtime.

Requisitos de implementação do protocolo

Seu servidor A2A deve implementar esses requisitos específicos de protocolo:

  • Transporte: JSON-RPC 2.0 via HTTP - Permite a comunicação padronizada de agente para agente

  • Gerenciamento de sessão: a plataforma adiciona automaticamente o X-Amzn-Bedrock-AgentCore-Runtime-Session-Id cabeçalho para isolamento da sessão

  • Agent Discovery: deve fornecer o cartão do agente no /.well-known/agent-card.json endpoint

Requisitos de contêiner

Seu servidor A2A deve ser implantado como um aplicativo em contêiner que atenda às seguintes especificações:

  • Host: 0.0.0.0

  • Porta: 9000 - Porta padrão para comunicação com o servidor A2A (diferente dos protocolos HTTP e MCP)

  • Plataforma: contêiner ARM64 - necessário para compatibilidade com o ambiente de execução AWS Amazon Bedrock AgentCore

Requisitos de caminho

/- POSTAR

Finalidade

Recebe mensagens JSON-RPC 2.0 e as processa por meio dos recursos do seu agente, passagem completa da carga útil da InvokeAgentRuntimeAPI com mensagens do protocolo A2A

Casos de uso

O endpoint raiz serve a vários propósitos principais:

  • Agent-to-agent comunicação e colaboração

  • Multi-step fluxos de trabalho do agente e delegação de tarefas

  • Real-time experiências de conversação entre agentes

  • Invocação de ferramentas e compartilhamento de recursos

Formato de solicitação

Os servidores A2A esperam solicitações formatadas 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 resposta

Os servidores A2A respondem com respostas formatadas JSON-RPC 2.0 contendo tarefas e artefatos:

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 - OBTER known/agent

Finalidade

Fornece metadados do cartão de agente para descoberta de agentes e anúncio de recursos

Casos de uso

O endpoint do Agent Card serve a vários propósitos principais:

  • Descoberta de agentes em sistemas multiagentes

  • Publicidade de capacidades e habilidades

  • Especificação do requisito de autenticação

  • Configuração do endpoint de serviço

Formato de resposta

Retorna metadados JSON que descrevem a identidade e os recursos do 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 - OBTER

Finalidade

Verifica se seu servidor A2A está operacional e pronto para lidar com solicitações

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: 200 para códigos de erro íntegros e apropriados para estados não íntegros

{ "status": "Healthy" }

statusé obrigatório e é um dos Healthy ouHealthyBusy. Enquanto o status forHealthyBusy, a sessão de tempo de execução é mantida ativa.

Um time_of_last_update campo opcional (um carimbo de data/hora do Unix em segundos) pode ser incluído para relatar quando a status última alteração foi feita.

Atenção

Não time_of_last_update defina a hora atual em cada ping. Um registro de data e hora que avança a cada ping sinaliza uma mudança contínua de status, o que evita que o tempo limite da sessão ociosa seja acionado. As sessões então persistem até MaxLifetime esgotar sua cota de sessão. Se você omitir o campo, a plataforma rastreará as alterações de status sozinha. Se você usa o AgentCore SDK do Bedrock, a resposta do ping é tratada para você.

Requisitos de autenticação

Os servidores A2A oferecem suporte a vários mecanismos de autenticação:

Tokens de portador do OAuth 2.0

Para autenticação do cliente A2A, inclua o token do portador nos cabeçalhos da solicitação:

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

Autenticação SigV4

A autenticação AWS SigV4 padrão também é suportada para acesso programático.

Tratamento de erros

Os servidores A2A retornam erros como respostas de erro padrão JSON-RPC 2.0 com códigos de status HTTP 200 para manter a conformidade do protocolo:

JSON-RPC Código de erro Exceção de execução Código de erro HTTP JSON-RPC Mensagem de erro

-32501

ResourceNotFoundException

404

Recurso não encontrado - O recurso solicitado não existe

-3 2052

ValidationException

400

Erro de validação - Dados de solicitação inválidos

-320 53

ThrottlingException

429

Limite de taxa excedido - Muitas solicitações

-32 054

ResourceConflictException

409

Conflito de recursos - O recurso já existe

-3205

RuntimeClientError

424

Erro do cliente de tempo de execução - Verifique seus CloudWatch registros para obter mais informações

Exemplo de resposta de erro:

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

Respostas de autenticação OAuth

OAuth-configured os agentes seguem os padrões de autenticação RFC 6749 (OAuth 2.0). Quando a autenticação está ausente, o serviço retorna uma resposta 401 não autorizada com um WWW-Authenticate cabeçalho (de acordo com a RFC 7235), permitindo que os clientes descubram os endpoints do servidor de autorização por meio da API. GetRuntimeProtectedResourceMetadata

401 Não autorizado - Autenticação ausente

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 os agentes retornam HTTP 403 com um ACCESS_DENIED erro e não incluem WWW-Authenticate cabeçalhos.