Interrompere una sessione in esecuzione
L'StopRuntimeSessionoperazione consente di terminare immediatamente le sessioni di Active Agent AgentCore Runtime per una corretta pulizia delle risorse e una corretta gestione del ciclo di vita della sessione.
Quando viene richiamata, questa operazione termina istantaneamente la sessione specificata e interrompe tutte le risposte di streaming in corso. Ciò consente alle risorse di sistema di essere rilasciate correttamente e impedisce l'accumulo di sessioni orfane.
Utilizza StopRuntimeSession in questi scenari:
-
User-initiated fine: quando gli utenti concludono esplicitamente la conversazione
-
Chiusura dell'applicazione: pulizia proattiva prima della chiusura dell'applicazione
-
Gestione degli errori: interruzione forzata delle sessioni che non rispondono o sono bloccate
-
Gestione delle quote: rimani entro i limiti delle sessioni chiudendo le sessioni non utilizzate
-
Gestione del timeout: ripulisci le sessioni che superano la durata prevista
Prerequisiti
Per utilizzarlo StopRuntimeSession, è necessario:
-
Autorizzazione IAM
bedrock-agentcore:StopRuntimeSession -
Un agente AgentCore Runtime ARN valido
-
L'ID di una sessione attiva da terminare
Esempio
Formato della risposta
Formato di risposta previsto per operazioni riusciteStopRuntimeSession.
{ "ResponseMetadata": { "RequestId": "12345678-1234-1234-1234-123456789012", "HTTPStatusCode": 200 } }
Gestione degli errori
Risposte di errore comuni:
| Codice di stato | Errore | Description |
|---|---|---|
|
404 |
ResourceNotFoundException |
Sessione non trovata o già terminata |
|
403 |
AccessDeniedException |
Autorizzazioni insufficienti |
|
400 |
ValidationException |
Parametri non validi |
|
500 |
InternalServerException |
Errore di servizio |
Best practice
Gestione del ciclo di vita della sessione
class SessionManager: def __init__(self, client, agent_arn): self.client = client self.agent_arn = agent_arn self.active_sessions = set() def invoke_agent(self, session_id, payload): """Invoke agent and track session""" try: response = self.client.invoke_agent_runtime( agentRuntimeArn=self.agent_arn, runtimeSessionId=session_id, payload=payload ) self.active_sessions.add(session_id) return response except Exception as e: print(f"Failed to invoke agent: {e}") raise def stop_session(self, session_id): """Stop session and remove from tracking""" try: self.client.stop_runtime_session( agentRuntimeArn=self.agent_arn, runtimeSessionId=session_id, qualifier=endpoint_name ) self.active_sessions.discard(session_id) print(f"Session {session_id} stopped") except Exception as e: print(f"Failed to stop session {session_id}: {e}") def cleanup_all_sessions(self): """Stop all tracked sessions""" for session_id in list(self.active_sessions): self.stop_session(session_id)
Raccomandazioni
-
Gestisci sempre le eccezioni quando interrompi le sessioni
-
Tieni traccia delle sessioni attive nell'applicazione per la pulizia
-
Imposta dei timeout per le richieste di interruzione per evitare interruzioni
-
Registra le terminazioni delle sessioni per il debug e il monitoraggio
-
Utilizza i gestori di sessione per applicazioni complesse con più sessioni