As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Contrato de protocolo A2A
O contrato do 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, código, consulte Implantar servidores A2A em AgentCore tempo de execução.
Tópicos
Requisitos de implementação do protocolo
Seu servidor A2A deve implementar esses requisitos de protocolo específicos:
-
Transporte: JSON-RPC 2.0
por 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-Idcabeçalho para isolamento da sessão -
Agent Discovery: é necessário fornecer o cartão do agente no
/.well-known/agent-card.jsonendpoint
Requisitos de container
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
/- POSTAGEM
Finalidade
Recebe mensagens JSON-RPC 2.0 e as processa por meio dos recursos do seu agente, passagem completa da carga útil da InvokeAgentRuntime API 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 de agentes 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 Agent Card para descoberta de agentes e anúncio de capacidades
Casos de uso
O endpoint do Agent Card serve a vários propósitos principais:
-
Descoberta de agentes em sistemas multiagentes
-
Anúncio de capacidades e habilidades
-
Especificação do requisito de autenticação
-
Configuração do endpoint de serviço
Formato de resposta
Retorna metadados JSON descrevendo 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:
200para códigos de erro saudáveis 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 informar quando a status última alteração foi feita.
Atenção
Não time_of_last_update defina a hora atual em cada ping. Um carimbo de data/hora que avança a cada ping sinaliza uma mudança contínua de status, o que impede 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 Bedrock AgentCore SDK, a resposta do ping é tratada para você.
Requisitos de autenticação
Os servidores A2A suportam vários mecanismos de autenticação:
Tokens portadores do OAuth 2.0
Para autenticação do cliente A2A, inclua o token Bearer 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. A tabela a seguir mapeia cada exceção de tempo de execução para seu código de JSON-RPC erro, código de status HTTP e mensagem. Algumas exceções compartilham um código de JSON-RPC erro, mas retornam mensagens diferentes, então elas são listadas como linhas separadas.
| JSON-RPC Código de erro | Exceção de execução | Código de erro HTTP | JSON-RPC Mensagem de erro |
|---|---|---|---|
|
Não aplicável |
AccessDeniedException |
403 |
Acesso negado (retornado como um erro HTTP padrão, não um JSON-RPC erro) |
|
-32051 |
ResourceNotFoundException |
404 |
Recurso não encontrado - O recurso solicitado não existe |
|
-32052 |
ValidationException |
400 |
Erro de validação - dados de solicitação inválidos |
|
-32053 |
ThrottlingException |
429 |
Limite de taxa excedido - Muitas solicitações |
|
-32053 |
ServiceQuotaExceededException |
429 |
Limite de taxa excedido - Muitas solicitações |
|
-32054 |
ConflictException |
409 |
Conflito de recursos - O recurso já existe |
|
-32054 |
RetryableConflictException |
409 |
Operação da sessão em andamento, tente novamente |
|
-32055 |
RuntimeClientError |
424 |
Erro do cliente em tempo de execução - Verifique seus CloudWatch registros para obter mais informações |
|
-32603 |
Qualquer outra exceção |
500 |
Erro interno - Ocorreu um erro inesperado ao processar a solicitação |
ConflictExceptione RetryableConflictException ambos usam código JSON-RPC de erro -32054 (HTTP 409). Suas mensagens os distinguem. O serviço retorna RetryableConflictException (Session operation in progress, please retry) quando uma segunda operação tem como alvo uma sessão que o serviço está provisionando ou desativando. Essa condição é transitória e pode ser repetida. O chamador deve tentar novamente com um pequeno recuo exponencial, porque os clientes A2A não tentam novamente automaticamente.
nota
Diferentemente da convenção da especificação A2A de fornecer JSON-RPC erros em uma resposta HTTP 200, o AgentCore Runtime retorna o código de status HTTP real (por exemplo, 409 ou 404). Analise o JSON-RPC error corpo mesmo em respostas que não sejam 2xx, para que seu cliente não perca o código de erro (como-32054) ou a Session operation in progress, please retry mensagem de que precisa para tentar novamente.
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).
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.