Persistenza della sessione per regole ponderate
Quando utilizzi regole ponderate per i A/B test o implementazioni canarie, desideri che ogni sessione riceva un'esperienza coerente su più richieste. Senza la persistenza della sessione, una sessione potrebbe ricevere pacchetti di configurazione diversi o indirizzarla verso destinazioni diverse per ogni richiesta. Il routing verso una destinazione diversa significa un nuovo runtime dell'agente senza il contesto delle richieste precedenti, il che interrompe l'esperienza dell'utente.
Per risolvere questo problema, il gateway supporta la persistenza della sessione. Quando includi un ID di sessione nelle tue richieste, il gateway memorizza la decisione di routing della prima richiesta e la riutilizza per tutte le richieste successive nella stessa sessione.
Come funziona la persistenza della sessione
Il gateway identifica una sessione estraendo un ID di sessione da ogni richiesta. Il flusso di viscosità funziona come segue:
-
Alla prima richiesta con un ID di sessione, il gateway seleziona una variante in base ai pesi configurati e memorizza la decisione.
-
Le richieste successive con lo stesso ID di sessione riutilizzano la decisione memorizzata senza rivalutare i pesi.
-
Le richieste senza un ID di sessione vengono valutate in modo indipendente e senza alcuna persistenza.
Il modo in cui il gateway determina l'ID di sessione dipende dal tipo di destinazione:
-
AgentCore Obiettivi di runtime: il gateway utilizza l'
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idintestazione. Il valore dell'intestazione deve essere di almeno 33 caratteri. Non è necessario inviare questa intestazione alla prima richiesta. Se l'intestazione è assente, il runtime dell'agente genera automaticamente un ID di sessione e il gateway utilizza tale ID di sessione generato automaticamente per garantire la persistenza delle richieste successive, se lo includi. -
Destinazioni HTTP passthrough: per impostazione predefinita, il gateway utilizza l'intestazione.
X-Amzn-Bedrock-AgentCore-Runtime-Session-IdÈ inoltre possibile configurare un identificatore di sessione e un timeout personalizzati sulla destinazione, in modo che i client passthrough che utilizzano la propria intestazione di sessione non debbano adottare l'intestazione della sessione di runtime. Per ulteriori informazioni, consulta Configurare la persistenza della sessione per gli obiettivi passthrough.
Configura la persistenza della sessione per gli obiettivi passthrough
Per le destinazioni HTTP passthrough, puoi impostare un'opzione stickinessConfiguration nella configurazione della destinazione per controllare il modo in cui il gateway identifica le sessioni e la durata dell'affinità delle sessioni. Ciò è utile quando i client inviano già l'intestazione della propria sessione e non si desidera richiedere loro di inviare anche l'intestazione della sessione di runtime standard.
L'stickinessConfigurationoggetto contiene:
-
identifier (richiesto) — Un'espressione che indica al gateway dove trovare l'ID di sessione nella richiesta. Attualmente, il gateway può risolvere l'ID di sessione solo dall'intestazione di una richiesta. È possibile specificare l'intestazione in uno di questi moduli:
-
Un semplice nome di intestazione HTTP, ad esempio.
x-session-idIl gateway legge l'ID della sessione dall'intestazione della richiesta. -
Un'espressione del percorso contestuale del modulo
$.AMZN_AC_GW_CONTEXT.headers.{header-name}, ad esempio.$.AMZN_AC_GW_CONTEXT.headers.x-session-idOggi è supportata solo la
headersfonte. Altre fonti (ad esempio, un claim di JWT) non sono attualmente disponibili.
-
-
timeout (opzionale): il timeout di affinità della sessione, in secondi, da 1 a 86400 (24 ore). Dopo questa durata di inattività, l'affinità della sessione scade. La finestra si ripristina ad ogni richiesta (finestra scorrevole).
Quando una destinazione ha unstickinessConfiguration, il gateway risolve l'ID di sessione da quello configurato. identifier
L'esempio seguente crea una destinazione passthrough con un stickinessConfiguration che estrae l'ID di sessione da un'x-session-idintestazione personalizzata e fa scadere l'affinità di sessione dopo 8 ore (28800 secondi):
aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "my-passthrough-target", "targetConfiguration": { "http": { "passthrough": { "endpoint": "https://my-service.example.com", "protocolType": "CUSTOM", "stickinessConfiguration": { "identifier": "$.AMZN_AC_GW_CONTEXT.headers.x-session-id", "timeout": 28800 } } } }, "credentialProviderConfigurations": [ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ] }'
Per ulteriori informazioni sulle destinazioni passthrough, consulta HTTP passthrough targets.
Comportamenti importanti
Le decisioni archiviate hanno la precedenza sulle modifiche alle regole. Se si aggiorna una regola, le sessioni esistenti continuano con la decisione originale. Ciò garantisce la coerenza della sessione. Per applicare nuove regole a una sessione, avvia una nuova sessione con un nuovo ID di sessione.
Le sessioni scadono dopo un periodo di inattività. La finestra di scadenza si ripristina ad ogni richiesta (finestra scorrevole). Per gli obiettivi AgentCore di runtime, le sessioni scadono dopo 15 giorni di inattività. Per le destinazioni HTTP passthrough, la finestra di scadenza è quella timeout impostata nella destinazione stickinessConfiguration (da 1 a 86400 secondi); se non si imposta un timeout, viene applicata l'impostazione predefinita. Dopo la scadenza di una sessione, utilizza un nuovo ID di sessione per le nuove sessioni per evitare comportamenti di routing imprevisti. Ti consigliamo di non riutilizzare gli ID di sessione scaduti.
Lo stato della sessione è suddiviso in base all'obiettivo. Obiettivi diversi mantengono uno stato di sessione indipendente.
Supportato per destinazioni AgentCore Runtime e HTTP passthrough. La persistenza della sessione non è supportata per i target MCP.