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 HTTP
Comprenez les exigences relatives à la mise en œuvre du protocole HTTP dans votre application d'agent. Utilisez le protocole HTTP pour créer des points de terminaison d'API REST directs pour les request/response modèles traditionnels et des points de WebSocket terminaison pour les connexions de streaming bidirectionnelles en temps réel.
Note
Les points de terminaison HTTP (/invocations) et WebSocket (/ws) peuvent être déployés sur le même conteneur à l'aide du port 8080, ce qui permet la mise en œuvre d'un seul agent pour prendre en charge à la fois les interactions API traditionnelles et le streaming bidirectionnel en temps réel.
Pour un exemple de code, voir Commencer à utiliser la AgentCore CLI.
Rubriques
Exigences relatives aux conteneurs
Votre agent doit être déployé en tant qu'application conteneurisée répondant aux spécifications suivantes :
-
Hôte :
0.0.0.0 -
Port :
8080- Port standard pour la communication HTTP-based entre agents -
Plateforme : conteneur ARM64 - Nécessaire pour des raisons de compatibilité avec l' AgentCore environnement Runtime
Exigences relatives au chemin
/invocations - POST
Il s'agit du point de terminaison principal de l'interaction des agents avec entrée et JSON/SSE sortie JSON.
Objectif
Reçoit les demandes entrantes des utilisateurs ou des applications et les traite selon la logique métier de votre agent
Cas d’utilisation
Le /invocations point de terminaison répond à plusieurs objectifs principaux :
-
Interactions et conversations directes avec les utilisateurs
-
Intégrations d'API avec des systèmes externes
-
Traitement par lots de plusieurs demandes
-
Real-time réponses en streaming pour les opérations de longue durée
Exemple de format de demande
Content-Type: application/json { "prompt": "What's the weather today?" }
Formats de réponse
Votre agent peut répondre en utilisant l'un des formats suivants en fonction du cas d'utilisation :
Réponse JSON (hors diffusion)
Objectif
Fournit des réponses complètes aux demandes qui peuvent être traitées rapidement
Cas d’utilisation
Les réponses JSON sont idéales pour :
-
Scénarios simples permettant de répondre à des questions
-
Calculs déterministes
-
Recherches rapides de données
-
Confirmations de statut
Exemple de format de réponse JSON
Content-Type: application/json { "response": "Your agent's response here", "status": "success" }
Réponse SSE (streaming)
Server-sent events (SSE) vous permet de fournir des réponses en streaming en temps réel. Pour plus d'informations, consultez la spécification
Objectif
Permet de fournir des réponses incrémentielles pour les opérations de longue durée et d'améliorer l'expérience utilisateur
Cas d’utilisation
Les réponses SSE sont idéales pour :
-
Real-time expériences conversationnelles
-
Génération de contenu progressive
-
Long-running calculs avec résultats intermédiaires
-
Flux de données et mises à jour en direct
Exemple de format de réponse SSE
Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}
/ws - WebSocket (Facultatif)
Il s'agit du point de terminaison de WebSocket connexion principal pour les communications bidirectionnelles en temps réel.
Objectif
Accepte les demandes de WebSocket mise à niveau et maintient des connexions persistantes pour les interactions avec les agents de streaming
Cas d’utilisation
Le /ws point de terminaison répond à plusieurs objectifs principaux :
-
Real-time interfaces conversationnelles
-
Sessions interactives pour les agents avec feedback immédiat
-
Traitement des données en streaming avec communication bidirectionnelle
Établissement de la connexion
WebSocket les connexions commencent par une demande de mise à niveau HTTP :
Exemple de demande de mise à niveau 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
Exemple de réponse de WebSocket mise à niveau
HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Exigences relatives à la gestion des messages
Votre WebSocket terminal doit gérer :
-
Acceptation de la connexion : appel
await websocket.accept()pour établir la connexion -
Réception de messages : Supporte les types de messages texte ou binaires en fonction des besoins de votre application
-
Traitement des messages : gérez les messages entrants conformément à la logique métier de votre agent
-
Envoi de réponses : envoyez les réponses appropriées en utilisant
send_text()ousend_bytes() -
Cycle de vie de la connexion : gestion de l'établissement, de la maintenance et de la résiliation de la connexion
Formats de message
Messages texte
Format JSON (recommandé)
Objectif
Échange de données structuré pour les interactions entre agents
Exemple de message
{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }
Exemple de réponse
{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Format de texte brut
Objectif
Communication textuelle simple
Exemple
Hello, can you help me with this question?
Messages binaires
Objectif
Prise en charge des données non textuelles telles que des images, du son ou d'autres formats binaires
Cas d’utilisation
Les messages binaires prennent en charge plusieurs scénarios :
-
Multi-modal interactions avec les agents
-
Chargements et téléchargements de fichiers
-
Transmission de données compressées
-
Données de protocole binaire
Exigences en matière de manipulation
La gestion des messages binaires nécessite :
-
Utilisation
receive_bytes()etsend_bytes()méthodes -
Mettre en œuvre un traitement de données binaires approprié
-
Tenez compte des limites de taille des messages
Cycle de vie de connexion
Établissement de la connexion
-
HTTP Handshake : le client envoie une demande de WebSocket mise à niveau
-
Réponse de mise à niveau : l'agent accepte et renvoie 101 protocoles de commutation
-
WebSocket Actif : la communication bidirectionnelle commence
-
Liaison de session : associez la connexion à l'identifiant de session
Échange de messages
-
Boucle continue : implémentez une boucle d'écoute des messages
-
Traitement des messages : gestion des messages entrants de manière asynchrone
-
Génération de réponses : envoyez les réponses appropriées
-
Gestion des erreurs : gestion des exceptions et des problèmes de connexion
/ping - OBTENIR
Objectif
Vérifie que votre agent est opérationnel et prêt à traiter les demandes
Cas d’utilisation
Le /ping point de terminaison répond à plusieurs objectifs principaux :
-
Surveillance des services pour détecter et résoudre les problèmes
-
Restauration automatisée grâce à AWS l'infrastructure gérée
Format de 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
Si votre agent doit traiter des tâches en arrière-plan, vous pouvez l'indiquer avec le /ping statut. Si l'état du ping est définiHealthyBusy, la session d'exécution est considérée comme active.
Exemple de format de réponse Ping
{ "status": "<status_value>" }
- statut (obligatoire)
-
Healthy- Le système est prêt à accepter de nouveaux travauxHealthyBusy- Le système est opérationnel mais est actuellement occupé par des tâches asynchrones. Tant que l'état estHealthyBusydéfini, la session d'exécution est considérée comme active et reste active. - time_of_last_update (facultatif)
-
Horodatage Unix (en secondes) de la dernière modification.
statusRéglez-le uniquement en cas de changement de statut réel.Avertissement
Ne réglez
time_of_last_updatepas 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 quotaMaxLifetimede 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.
Gestion des erreurs
Contrairement aux AG-UI protocoles A2A, MCP et, le protocole HTTP n'enveloppe pas les erreurs dans une enveloppe spécifique au protocole. Le service renvoie les erreurs directement sous forme de réponses HTTP natives : le code d'état HTTP reflète l'exception et l'en-tête de x-amzn-ErrorType réponse contient le nom de l'exception. Le tableau suivant répertorie les exceptions que vous pouvez recevoir.
| Code d'erreur HTTP | Exception d'exécution (x-amzn-ErrorType) |
Description |
|---|---|---|
|
400 |
ValidationException |
Données ou paramètres de demande non valides |
|
401 |
UnauthorizedException |
Authentification requise ou informations d'identification non valides (OAuth-configured agents) |
|
402 |
ServiceQuotaExceededException |
La demande dépasserait un quota de service |
|
403 |
AccessDeniedException |
Autorisations insuffisantes pour l'opération demandée |
|
404 |
ResourceNotFoundException |
La ressource demandée n'existe pas |
|
409 |
ConflictException |
Conflit de ressources - La ressource existe déjà |
|
409 |
RetryableConflictException |
Fonctionnement de la session en cours, veuillez réessayer |
|
424 |
RuntimeClientError |
Le conteneur de votre agent a renvoyé une erreur 4xx ou 5xx. Vérifiez vos journaux CloudWatch |
|
429 |
ThrottlingException |
Trop de demandes : la limite de taux de demandes a été dépassée |
|
500 |
InternalServerException |
Une erreur inattendue s'est produite lors du traitement de la demande |
ConflictExceptionet RetryableConflictException les deux renvoient HTTP 409. L'x-amzn-ErrorTypeen-tête et le message 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. Réessayez avec une courte temporisation exponentielle. Les AWS kits SDK réessayent automatiquement cette exception lorsque les nouvelles tentatives par défaut sont activées. Si vous appelez l'API directement sans AWS SDK, vous devez réessayer vous-même.
Note
ServiceQuotaExceededExceptionrenvoie HTTP 402 sur cette surface HTTP native. Sur le protocole A2A, il renvoie HTTP 429, le même statut HTTP que la limitation. Sur le protocole MCP, il partage le code JSON-RPC d'erreur d'étranglement (-32003) mais renvoie HTTP 200. AG-UI On utilise un code SERVICE_QUOTA_EXCEEDED SSE distinct et renvoie HTTP 429.
Réponses d'authentification OAuth
OAuth-configured les agents suivent les normes d'authentification RFC 6749 (OAuth 2.0).
401 Accès non autorisé
Renvoyé lorsque l'en-tête d'autorisation est manquant.
WWW-Authenticate En-tête inclus :
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.