View a markdown version of this page

Interromper uma sessão em execução - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Interromper uma sessão em execução

A StopRuntimeSession operação permite que você encerre imediatamente as sessões ativas do agente AgentCore Runtime para a limpeza adequada dos recursos e o gerenciamento do ciclo de vida da sessão.

Quando chamada, essa operação encerra instantaneamente a sessão especificada e interrompe todas as respostas de streaming em andamento. Isso permite que os recursos do sistema sejam liberados adequadamente e evita o acúmulo de sessões órfãs.

Use StopRuntimeSession nesses cenários:

  • User-initiated fim: quando os usuários concluem explicitamente a conversa

  • Desligamento do aplicativo: limpeza proativa antes do encerramento do aplicativo

  • Tratamento de erros: forçar o encerramento de sessões que não respondem ou estão paralisadas

  • Gerenciamento de cotas: permaneça dentro dos limites da sessão fechando sessões não utilizadas

  • Tratamento do tempo limite: limpe as sessões que excedem a duração esperada

Pré-requisitos

Para usar StopRuntimeSession, você precisa:

  • Permissão bedrock-agentcore:StopRuntimeSession do IAM

  • Um agente válido: AgentCore Runtime ARN

  • O ID de uma sessão ativa a ser encerrada

exemplo
AWS SDK
  1. Você pode usar o AWS SDK para interromper as sessões do AgentCore Runtime de forma programática.

    Exemplo de Python usando boto3 para interromper uma AgentCore sessão de tempo de execução.

    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. Para aplicativos que usam a autenticação OAuth, faça solicitações HTTPS diretas:

    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 de resposta

Formato de resposta esperado para StopRuntimeSession operações bem-sucedidas.

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

Tratamento de erros

Respostas de erro comuns:

Código de status Erro Description

404

ResourceNotFoundException

Sessão não encontrada ou já encerrada

403

AccessDeniedException

Permissões insuficientes

400

ValidationException

Parâmetros inválidos

409

RetryableConflictException

Operação da sessão em andamento, tente novamente

500

InternalServerException

Erro de serviço

O serviço retorna RetryableConflictException (HTTP 409) quando sua StopRuntimeSession chamada chega enquanto o serviço ainda está provisionando ou desativando a sessão. Essa condição é transitória e pode ser repetida. Tente novamente com um pequeno recuo exponencial em vez de tratá-lo como uma falha terminal. Os AWS SDKs repetem automaticamente essa exceção quando as novas tentativas padrão estão habilitadas. Se você desativou as novas tentativas ou chamou a API diretamente sem um AWS SDK (por exemplo, a solicitação HTTPS mostrada anteriormente), tente novamente você mesmo.

Práticas recomendadas

Gerenciamento do ciclo de vida da sessão

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)

Recomendações

  • Sempre manipule exceções ao interromper as sessões

  • Acompanhe as sessões ativas em seu aplicativo para limpeza

  • Defina tempos limite para solicitações de interrupção para evitar interrupções

  • Registrar terminações de sessão para depuração e monitoramento

  • Use gerenciadores de sessão para aplicativos complexos com várias sessões