View a markdown version of this page

Menghentikan sesi yang sedang berjalan - Batu Dasar Amazon AgentCore

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menghentikan sesi yang sedang 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

  • Shutdown aplikasi: Pembersihan proaktif sebelum penghentian aplikasi

  • Penanganan kesalahan: Memaksa penghentian sesi yang tidak responsif atau terhenti

  • 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 diakhiri

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

    Contoh Python menggunakan boto3 untuk menghentikan sesi AgentCore Runtime.

    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

409

RetryableConflictException

Operasi sesi sedang berlangsung, silakan coba lagi

500

InternalServerException

Kesalahan Layanan

Layanan kembali RetryableConflictException (HTTP 409) ketika StopRuntimeSession panggilan Anda tiba saat layanan masih menyediakan atau menghancurkan sesi. Kondisi ini bersifat sementara dan dapat dicoba kembali. Coba lagi dengan mundur eksponensial pendek alih-alih memperlakukannya sebagai kegagalan terminal. SDK AWS mencoba ulang pengecualian ini secara otomatis saat percobaan ulang default diaktifkan. Jika Anda menonaktifkan percobaan ulang atau memanggil API secara langsung tanpa AWS SDK (misalnya, permintaan HTTPS yang ditampilkan sebelumnya), coba lagi sendiri.

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 tangani pengecualian saat menghentikan sesi

  • Melacak sesi aktif di aplikasi Anda untuk pembersihan

  • Tetapkan batas waktu untuk permintaan berhenti untuk menghindari hang

  • Pengakhiran sesi log untuk debugging dan pemantauan

  • Gunakan manajer sesi untuk aplikasi kompleks dengan beberapa sesi