View a markdown version of this page

Contratto di protocollo HTTP - Fondamento Amazon AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Contratto di protocollo HTTP

Comprendi i requisiti per l'implementazione del protocollo HTTP nella tua applicazione agente. Usa il protocollo HTTP per creare endpoint API REST diretti per request/response pattern tradizionali ed WebSocket endpoint per connessioni di streaming bidirezionali in tempo reale.

Nota

Entrambi gli endpoint HTTP (/invocations) e WebSocket (/ws) possono essere distribuiti sullo stesso contenitore utilizzando la porta 8080, consentendo l'implementazione di un singolo agente per supportare sia le interazioni API tradizionali che lo streaming bidirezionale in tempo reale.

Per esempio di codice, vedi Guida introduttiva all'interfaccia della riga di comando. AgentCore

Requisiti del contenitore

L'agente deve essere distribuito come applicazione containerizzata che soddisfi le seguenti specifiche:

  • Host: 0.0.0.0

  • Porta: 8080 - Porta standard per la comunicazione con gli HTTP-based agenti

  • Piattaforma: contenitore ARM64 - Necessario per la compatibilità con l'ambiente AgentCore Runtime

Requisiti del percorso

/invocazioni - POST

Questo è il principale endpoint di interazione dell'agente con input e output JSON. JSON/SSE

Scopo

Riceve le richieste in arrivo da utenti o applicazioni e le elabora tramite la logica aziendale dell'agente

Casi d'uso

L'/invocationsendpoint serve a diversi scopi chiave:

  • Interazioni e conversazioni dirette con gli utenti

  • Integrazioni API con sistemi esterni

  • Elaborazione in batch di più richieste

  • Real-time risposte in streaming per operazioni di lunga durata

Esempio di formato di richiesta

Content-Type: application/json { "prompt": "What's the weather today?" }

Formati di risposta

Il tuo agente può rispondere utilizzando uno dei seguenti formati a seconda del caso d'uso:

Risposta JSON (non in streaming)

Scopo

Fornisce risposte complete alle richieste che possono essere elaborate rapidamente

Casi d'uso

Le risposte JSON sono ideali per:

  • Scenari semplici con risposta a domande

  • Calcoli deterministici

  • Ricerche rapide dei dati

  • Conferme di stato

Esempio di formato di risposta JSON

Content-Type: application/json { "response": "Your agent's response here", "status": "success" }

Risposta SSE (streaming)

Server-sent events (SSE) consentono di fornire risposte in streaming in tempo reale. Per ulteriori informazioni, consulta le specifiche degli Server-sent eventi.

Scopo

Consente una risposta incrementale per operazioni di lunga durata e una migliore esperienza utente

Casi d'uso

Le risposte SSE sono ideali per:

  • Real-time esperienze conversazionali

  • Generazione progressiva di contenuti

  • Long-running calcoli con risultati intermedi

  • Feed e aggiornamenti di dati in tempo reale

Esempio di formato di risposta SSE

Content-Type: text/event-stream data: {"event": "partial response 1"} data: {"event": "partial response 2"} data: {"event": "final response"}

/ws - WebSocket (Facoltativo)

Questo è l'endpoint di WebSocket connessione principale per la comunicazione bidirezionale in tempo reale.

Scopo

Accetta richieste di WebSocket aggiornamento e mantiene connessioni permanenti per le interazioni con gli agenti di streaming

Casi d'uso

L'/wsendpoint serve a diversi scopi chiave:

  • Real-time interfacce conversazionali

  • Sessioni interattive con agenti con feedback immediato

  • Elaborazione dei dati in streaming con comunicazione bidirezionale

Stabilimento della connessione

WebSocket le connessioni iniziano con una richiesta di aggiornamento HTTP:

Esempio di richiesta di aggiornamento 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

Esempio di risposta all' WebSocket aggiornamento

HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Requisiti di gestione dei messaggi

Il tuo WebSocket endpoint deve gestire:

  • Accettazione della connessione: chiamata await websocket.accept() per stabilire la connessione

  • Ricezione dei messaggi: supporta tipi di messaggi di testo o binari in base ai requisiti dell'applicazione

  • Elaborazione dei messaggi: gestisci i messaggi in arrivo in base alla logica aziendale del tuo agente

  • Invio delle risposte: invia le risposte appropriate utilizzando send_text() o send_bytes()

  • Ciclo di vita della connessione: gestisci la creazione, la manutenzione e la cessazione della connessione

Formati dei messaggi

Messaggi di testo
Formato JSON (consigliato)

Scopo

Scambio di dati strutturato per le interazioni con gli agenti

Messaggio di esempio

{ "prompt": "Hello, can you help me with this question?", "session_id": "session-uuid", "message_type": "user_message" }

Esempio di risposta

{ "response": "I'd be happy to help you with your question!", "session_id": "session-uuid", "message_type": "agent_response" }
Formato di testo normale

Scopo

Comunicazione semplice basata su testo

Esempio

Hello, can you help me with this question?
Messaggi binari

Scopo

Supporto per dati non testuali come immagini, audio o altri formati binari

Casi d'uso

I messaggi binari supportano diversi scenari:

  • Multi-modal interazioni tra agenti

  • Upload e download di file

  • Trasmissione di dati compressi

  • Dati di protocollo binario

Requisiti di gestione

La gestione dei messaggi binari richiede:

  • Uso receive_bytes() e send_bytes() metodi

  • Implementare un'elaborazione di dati binari appropriata

  • Considerate le limitazioni relative alle dimensioni dei messaggi

Ciclo di vita della connessione

Stabilimento della connessione
  1. Handshake HTTP: il client invia una richiesta di WebSocket aggiornamento

  2. Risposta all'aggiornamento: l'agente accetta e restituisce 101 protocolli di commutazione

  3. WebSocket Attivo: inizia la comunicazione bidirezionale

  4. Associazione di sessione: associa la connessione all'identificatore di sessione

Scambio di messaggi
  1. Loop continuo: implementa il ciclo di ascolto dei messaggi

  2. Elaborazione dei messaggi: gestisce i messaggi in arrivo in modo asincrono

  3. Generazione di risposte: invia le risposte appropriate

  4. Gestione degli errori: gestione delle eccezioni e dei problemi di connessione

/ping - GET

Scopo

Verifica che il tuo agente sia operativo e pronto a gestire le richieste

Casi d'uso

L'/pingendpoint serve a diversi scopi chiave:

  • Monitoraggio del servizio per rilevare e risolvere i problemi

  • Ripristino automatico tramite l' AWS infrastruttura gestita

Formato di risposta

Restituisce un codice di stato che indica lo stato di salute del tuo agente:

  • Content-Type : application/json

  • Codice di stato HTTP: 200 per codici di errore integri e appropriati per stati non integri

Se il tuo agente deve elaborare attività in background, puoi indicarlo con lo /ping stato. Se lo stato del ping èHealthyBusy, la sessione di runtime è considerata attiva.

Esempio di formato di risposta Ping

{ "status": "<status_value>" }
stato (richiesto)

Healthy- Il sistema è pronto ad accettare nuovi lavori

HealthyBusy- Il sistema è operativo ma attualmente è occupato con attività asincrone. Mentre lo stato èHealthyBusy, la sessione di runtime è considerata attiva e viene mantenuta attiva.

time_of_last_update (opzionale)

Timestamp Unix (in secondi) dell'ultima modifica. status Impostalo solo su un cambio di stato effettivo.

avvertimento

Non impostate time_of_last_update l'ora corrente per ogni ping. Un timestamp che avanza ad ogni ping segnala un continuo cambiamento di stato, che impedisce che il timeout della sessione inattiva si attivi. Le sessioni quindi persistono fino MaxLifetime all'esaurimento della quota di sessione e possono esaurire la quota di sessione. Se ometti il campo, la piattaforma tiene traccia delle modifiche di stato da sola. Se utilizzi Bedrock AgentCore SDK, la risposta al ping viene gestita per te.

Gestione degli errori

A differenza dei AG-UI protocolli A2A, MCP e, il protocollo HTTP non raggruppa gli errori in una busta specifica del protocollo. Il servizio restituisce gli errori direttamente come risposte HTTP native: il codice di stato HTTP riflette l'eccezione e l'intestazione della x-amzn-ErrorType risposta riporta il nome dell'eccezione. La tabella seguente elenca le eccezioni che puoi ricevere.

Codice di errore HTTP Eccezione di runtime () x-amzn-ErrorType Description

400

ValidationException

Dati o parametri della richiesta non validi

401

UnauthorizedException

Autenticazione richiesta o credenziali (agenti) non valide OAuth-configured

402

ServiceQuotaExceededException

La richiesta supererebbe una quota di servizio

403

AccessDeniedException

Autorizzazioni insufficienti per l'operazione richiesta

404

ResourceNotFoundException

La risorsa richiesta non esiste

409

ConflictException

Conflitto di risorse: la risorsa esiste già

409

RetryableConflictException

Operazione della sessione in corso, riprova

424

RuntimeClientError

Il container del tuo agente ha restituito un errore 4xx o 5xx: controlla i tuoi log CloudWatch

429

ThrottlingException

Troppe richieste: il limite di frequenza delle richieste è stato superato

500

InternalServerException

Si è verificato un errore imprevisto durante l'elaborazione della richiesta

ConflictExceptioned RetryableConflictException entrambi restituiscono HTTP 409. L'x-amzn-ErrorTypeintestazione e il messaggio li distinguono. Il servizio restituisce RetryableConflictException (Session operation in progress, please retry) quando una seconda operazione è indirizzata a una sessione di cui il servizio sta eseguendo il provisioning o la disattivazione. Questa condizione è transitoria e riprovabile. Riprova con un breve backoff esponenziale. Gli AWS SDK riprovano automaticamente questa eccezione quando i tentativi predefiniti sono abilitati. Se chiami l'API direttamente senza un AWS SDK, devi riprovare tu stesso.

Nota

ServiceQuotaExceededExceptionrestituisce HTTP 402 su questa superficie HTTP nativa. Nel protocollo A2A restituisce HTTP 429, lo stesso stato HTTP del throttling. Nel protocollo MCP condivide il codice di JSON-RPC errore di limitazione () ma restituisce HTTP 200. -32003 Su di AG-UI esso utilizza un codice SERVICE_QUOTA_EXCEEDED SSE distinto e restituisce HTTP 429.

Risposte di autenticazione OAuth

OAuth-configured gli agenti seguono gli standard di autenticazione RFC 6749 (OAuth 2.0). Quando manca l'autenticazione, il servizio restituisce una risposta 401 Unauthorized con un' WWW-Authenticate intestazione (per RFC 7235), che consente ai client di scoprire gli endpoint del server di autorizzazione tramite l'API. GetRuntimeProtectedResourceMetadata

401 - Autorizzazione negata

Restituito quando manca l'intestazione di autorizzazione.

Include l' WWW-Authenticate intestazione:

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 gli agenti restituiscono HTTP 403 con un ACCESS_DENIED errore e non includono WWW-Authenticate le intestazioni.