Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Contrat de protocole A2A
Le contrat de protocole A2A définit les exigences relatives à la mise en œuvre de la communication agent à agent dans Amazon Bedrock Runtime. AgentCore Ce contrat spécifie les exigences techniques, les points de terminaison et les modèles de communication que votre serveur A2A doit implémenter.
Pour un exemple de code, voir Déployer des serveurs A2A dans AgentCore Runtime.
Rubriques
Exigences de mise en œuvre du protocole
Votre serveur A2A doit implémenter ces exigences de protocole spécifiques :
-
Transport : JSON-RPC 2.0
via HTTP : permet une communication standardisée d'agent à agent -
Gestion des sessions : la plateforme ajoute automatiquement un
X-Amzn-Bedrock-AgentCore-Runtime-Session-Iden-tête pour isoler les sessions -
Découverte des agents : la carte d'agent doit être fournie au
/.well-known/agent-card.jsonterminal
Exigences relatives aux conteneurs
Votre serveur A2A doit être déployé en tant qu'application conteneurisée répondant aux spécifications suivantes :
-
Hôte :
0.0.0.0 -
Port :
9000- Port standard pour la communication avec le serveur A2A (différent des protocoles HTTP et MCP) -
Plateforme : conteneur ARM64 - Requis pour des raisons de compatibilité avec l'environnement d' AWS exécution Amazon Bedrock AgentCore
Exigences relatives au chemin
/- POSTE
Objectif
Reçoit les messages JSON-RPC 2.0 et les traite grâce aux capacités de votre agent, transmission complète de la charge utile de l'InvokeAgentRuntimeAPI avec les messages du protocole A2A
Cas d’utilisation
Le point de terminaison racine répond à plusieurs objectifs principaux :
-
Agent-to-agent communication et collaboration
-
Multi-step flux de travail des agents et délégation de tâches
-
Real-time expériences conversationnelles entre agents
-
Invocation d'outils et partage de capacités
Format des demandes
Les serveurs A2A attendent des requêtes au format 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" } } }
Format de la réponse
Les serveurs A2A répondent par des réponses au format JSON-RPC 2.0 contenant des tâches et des artefacts :
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 - OBTENIR known/agent
Objectif
Fournit les métadonnées de la carte d'agent pour la découverte des agents et la publicité des capacités
Cas d’utilisation
Le terminal de la carte d'agent répond à plusieurs objectifs principaux :
-
Découverte d'agents dans des systèmes multi-agents
-
Publicité sur les capacités et les compétences
-
Spécification des exigences d'authentification
-
Configuration des terminaux de service
Format de la réponse
Renvoie des métadonnées JSON décrivant l'identité et les fonctionnalités de l'agent :
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 - OBTENIR
Objectif
Vérifie que votre serveur A2A est opérationnel et prêt à traiter les demandes
Format de la réponse
Renvoie un code d'état indiquant l'état de santé de votre agent :
-
Content-Type :
application/json -
Code d'état HTTP :
200pour des codes d'erreur sains et appropriés pour les états défectueux
{ "status": "Healthy" }
statusest obligatoire et est l'un des Healthy ouHealthyBusy. Tant que le statut est HealthyBusy défini, la session d'exécution est maintenue active.
Un time_of_last_update champ facultatif (horodatage Unix en secondes) peut être inclus pour indiquer la date de la status dernière modification.
Avertissement
Ne réglez time_of_last_update pas l'heure actuelle à chaque ping. Un horodatage qui avance à chaque ping indique un changement d'état continu, ce qui empêche le déclenchement du délai d'inactivité. Les sessions persistent alors jusqu'à ce que votre quota MaxLifetime de sessions soit épuisé. Si vous omettez ce champ, la plateforme suit elle-même les changements de statut. Si vous utilisez le AgentCore SDK Bedrock, la réponse ping est gérée pour vous.
Exigences en matière d'authentification
Les serveurs A2A prennent en charge plusieurs mécanismes d'authentification :
Jetons au porteur OAuth 2.0
Pour l'authentification du client A2A, incluez le jeton Bearer dans les en-têtes de demande :
Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>
Authentification SIGv4
L'authentification AWS Sigv4 standard est également prise en charge pour l'accès par programmation.
Gestion des erreurs
Les serveurs A2A renvoient des erreurs sous forme de réponses d'erreur standard JSON-RPC 2.0. Le tableau suivant associe chaque exception d'exécution à son code JSON-RPC d'erreur, à son code d'état HTTP et à son message. Certaines exceptions partagent un code JSON-RPC d'erreur mais renvoient des messages différents. Elles sont donc répertoriées sur des lignes distinctes.
| JSON-RPC Code d'erreur | Exception d'exécution | Code d'erreur HTTP | JSON-RPC Message d'erreur |
|---|---|---|---|
|
Non applicable |
AccessDeniedException |
403 |
Accès refusé (renvoyé sous la forme d'une erreur HTTP standard, pas d' JSON-RPC erreur) |
|
-32051 |
ResourceNotFoundException |
404 |
Ressource introuvable - La ressource demandée n'existe pas |
|
-32052 |
ValidationException |
400 |
Erreur de validation - Données de demande non valides |
|
-32053 |
ThrottlingException |
429 |
Limite de débit dépassée - Trop de demandes |
|
-32053 |
ServiceQuotaExceededException |
429 |
Limite de débit dépassée - Trop de demandes |
|
-32054 |
ConflictException |
409 |
Conflit de ressources - La ressource existe déjà |
|
-32054 |
RetryableConflictException |
409 |
Fonctionnement de la session en cours, veuillez réessayer |
|
-32055 |
RuntimeClientError |
424 |
Erreur du client d'exécution : veuillez consulter vos CloudWatch journaux pour plus d'informations |
|
-32603 |
Toute autre exception |
500 |
Erreur interne : une erreur inattendue s'est produite lors du traitement de la demande |
ConflictExceptionet RetryableConflictException les deux utilisent un code JSON-RPC d'erreur -32054 (HTTP 409). Leurs messages les distinguent. Le service renvoie RetryableConflictException (Session operation in progress, please retry) lorsqu'une deuxième opération cible une session que le service est en train de provisionner ou de supprimer. Cette condition est transitoire et peut être réessayée. L'appelant doit réessayer avec une courte période d'attente exponentielle, car les clients A2A ne réessayent pas automatiquement.
Note
Contrairement à la convention de la spécification A2A qui consiste à générer des JSON-RPC erreurs sur une réponse HTTP 200, AgentCore Runtime renvoie le vrai code d'état HTTP (par exemple, 409 ou 404). Analysez le JSON-RPC error corps même pour les réponses autres que 2xx, afin que votre client ne rate pas le code d'erreur (tel que-32054) ou le Session operation in progress, please retry message dont il a besoin pour lancer une nouvelle tentative.
Exemple de réponse d'erreur :
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32052, "message": "Validation error - Invalid request data" } }
Réponses d'authentification OAuth
OAuth-configured les agents suivent les normes d'authentification RFC 6749 (OAuth 2.0).
401 Non autorisé - Authentification manquante
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}"
Note
SigV4-configured les agents renvoient HTTP 403 avec une ACCESS_DENIED erreur et n'incluent pas d'WWW-Authenticateen-têtes.