View a markdown version of this page

Interrompere una sessione in corso - 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à.

Interrompere una sessione in corso

L'StopRuntimeSessionoperazione consente di terminare immediatamente le sessioni di Active Agent AgentCore Runtime per una corretta pulizia delle risorse e una gestione del ciclo di vita delle sessioni.

Quando viene chiamata, questa operazione interrompe istantaneamente la sessione specificata e interrompe tutte le risposte in streaming in corso. Ciò consente di rilasciare correttamente le risorse di sistema e impedisce l'accumulo di sessioni orfane.

Utilizzalo 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 si bloccano

  • Gestione delle quote: rimani entro i limiti della sessione 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
AWS SDK
  1. È possibile utilizzare l' AWS SDK per interrompere le sessioni di AgentCore Runtime a livello di codice.

    Esempio di Python che utilizza boto3 per interrompere una sessione di Runtime. AgentCore

    import boto3 # Initialize the AgentCore client client = boto3.client('bedrock-agentcore', region_name='us-west-2') try: # Stop the runtime session response = client.stop_runtime_session( agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent', runtimeSessionId='your-session-id', qualifier='DEFAULT' # Optional: endpoint name ) print(f"Session terminated successfully") print(f"Request ID: {response['ResponseMetadata']['RequestId']}") except client.exceptions.ResourceNotFoundException: print("Session not found or already terminated") except client.exceptions.AccessDeniedException: print("Insufficient permissions to stop session") except Exception as e: print(f"Error stopping session: {str(e)}")
HTTPS request
  1. Per le applicazioni che utilizzano l'autenticazione OAuth, effettua richieste HTTPS dirette:

    import requests import urllib.parse def stop_session_with_oauth(agent_arn, session_id, bearer_token, qualifier="DEFAULT"): # URL encode the agent ARN encoded_arn = agent_arn.replace(':', '%3A').replace('/', '%2F') # Construct the endpoint URL url = f"https://bedrock-agentcore.us-west-2.amazonaws.com/runtimes/{encoded_arn}/stopruntimesession?qualifier={qualifier}" headers = { "Authorization": f"Bearer {bearer_token}", "Content-Type": "application/json", "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id": session_id } try: response = requests.post(url, headers=headers) response.raise_for_status() print(f"Session {session_id} terminated successfully") return response.json() except requests.exceptions.HTTPError as e: if e.response.status_code == 404: print("Session not found or already terminated") elif e.response.status_code == 403: print("Insufficient permissions or invalid token") else: print(f"HTTP error: {e.response.status_code}") raise except requests.exceptions.RequestException as e: print(f"Request failed: {str(e)}") raise # Usage stop_session_with_oauth( agent_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent", session_id="your-session-id", bearer_token="your-oauth-token" )

Formato della risposta

Formato di risposta previsto per operazioni riusciteStopRuntimeSession.

{ "ResponseMetadata": { "RequestId": "12345678-1234-1234-1234-123456789012", "HTTPStatusCode": 200 } }

Gestione degli errori

Risposte agli errori più comuni:

Codice di stato Errore Description

404

ResourceNotFoundException

Sessione non trovata o già terminata

403

AccessDeniedException

Autorizzazioni insufficienti

400

ValidationException

Parametri non validi

409

RetryableConflictException

Operazione di sessione in corso, riprova

500

InternalServerException

Errore di servizio

Il servizio ritorna RetryableConflictException (HTTP 409) quando la StopRuntimeSession chiamata arriva mentre il servizio è ancora in fase di provisioning o sta interrompendo la sessione. Questa condizione è transitoria e riprovabile. Riprova con un breve backoff esponenziale invece di considerarlo un errore terminale. Gli AWS SDK riprovano automaticamente questa eccezione quando i tentativi predefiniti sono abilitati. Se hai disabilitato i tentativi o chiami l'API direttamente senza un AWS SDK (ad esempio, la richiesta HTTPS mostrata in precedenza), riprova tu stesso.

Best practice

Gestione del ciclo di vita delle sessioni

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 il blocco

  • Registra le terminazioni delle sessioni per il debug e il monitoraggio

  • Utilizza i gestori di sessione per applicazioni complesse con più sessioni