View a markdown version of this page

Hentikan sesi berjalan - Batuan Dasar Amazon AgentCore

Hentikan sesi berjalan

StopRuntimeSessionOperasi ini memungkinkan Anda segera menghentikan sesi AgentCore Runtime agen aktif untuk pembersihan sumber daya yang tepat dan manajemen siklus hidup sesi.

Saat dipanggil, operasi ini langsung mengakhiri sesi yang ditentukan dan menghentikan respons streaming yang sedang berlangsung. Ini memungkinkan sumber daya sistem dilepaskan dengan benar dan mencegah akumulasi sesi yatim piatu.

Gunakan StopRuntimeSession dalam skenario ini:

  • User-initiated akhir: Ketika pengguna secara eksplisit menyimpulkan percakapan mereka

  • Pematian aplikasi: Pembersihan proaktif sebelum penghentian aplikasi

  • Penanganan kesalahan: Paksa penghentian sesi yang tidak responsif atau macet

  • Manajemen kuota: Tetap dalam batas sesi dengan menutup sesi yang tidak digunakan

  • Penanganan batas waktu: Bersihkan sesi yang melebihi durasi yang diharapkan

Prasyarat

Untuk menggunakan StopRuntimeSession, Anda perlu:

  • bedrock-agentcore:StopRuntimeSessionIzin IAM

  • Agen AgentCore Runtime ARN yang valid

  • ID sesi aktif untuk mengakhiri

contoh
AWS SDK
  1. Anda dapat menggunakan AWS SDK untuk menghentikan sesi AgentCore Runtime secara terprogram.

    Contoh Python menggunakan boto3 untuk menghentikan sesi 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. Untuk aplikasi yang menggunakan otentikasi OAuth, buat permintaan HTTPS langsung:

    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" )

Format respons

Format respons yang diharapkan untuk StopRuntimeSession operasi yang berhasil.

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

Penanganan kesalahan

Tanggapan kesalahan umum:

Kode Status Kesalahan Deskripsi

404

ResourceNotFoundException

Sesi tidak ditemukan atau sudah dihentikan

403

AccessDeniedException

Izin tidak cukup

400

ValidationException

Parameter tidak valid

500

InternalServerException

Kesalahan Layanan

Praktik terbaik

Manajemen siklus hidup sesi

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)

Rekomendasi

  • Selalu menangani pengecualian saat menghentikan sesi

  • Lacak sesi aktif di aplikasi Anda untuk pembersihan

  • Tetapkan batas waktu untuk permintaan berhenti agar tidak menggantung

  • Penghentian sesi log untuk debugging dan pemantauan

  • Gunakan manajer sesi untuk aplikasi kompleks dengan beberapa sesi