Konfigurasikan pengaturan siklus AgentCore hidup Amazon Bedrock
Parameter LifecycleConfiguration input untuk CreateAgentRuntimememungkinkan Anda mengelola siklus hidup sesi runtime dan sumber daya di Amazon Bedrock Runtime. AgentCore Konfigurasi ini membantu mengoptimalkan pemanfaatan sumber daya dengan membersihkan sesi idle secara otomatis dan mencegah instans yang berjalan lama mengkonsumsi sumber daya tanpa batas waktu.
Anda juga dapat mengonfigurasi pengaturan siklus hidup untuk AgentCore Runtime yang ada dengan operasi. UpdateAgentRuntime
Topik
Atribut konfigurasi
| Atribut | Tipe | Rentang (detik) | Diperlukan | Deskripsi |
|---|---|---|---|---|
|
|
Bilangan Bulat |
60-28800 |
Tidak |
Batas waktu dalam hitungan detik untuk sesi runtime idle. Ketika sesi tetap menganggur selama durasi ini, itu akan memicu penghentian. Pengakhiran dapat berlangsung hingga 15 detik karena pencatatan dan penyelesaian proses lainnya. Default: 900 detik (15 menit) |
|
|
Bilangan Bulat |
60-28800 |
Tidak |
Masa pakai maksimum untuk instance dalam hitungan detik. Setelah tercapai, instance akan menginisialisasi penghentian. Pengakhiran dapat berlangsung hingga 15 detik karena pencatatan dan penyelesaian proses lainnya. Default: 28800 detik (8 jam). Sesi itu sendiri dapat bertahan melampaui ini dengan instance baru yang disediakan. |
Batasan
-
idleRuntimeSessionTimeoutharus kurang dari atau sama denganmaxLifetime -
Kedua nilai diukur dalam hitungan detik
-
Rentang yang valid: 60 hingga 28800 detik (hingga 8 jam)
Perilaku default
Ketika tidak LifecycleConfiguration disediakan atau berisi nilai nol, platform menerapkan logika berikut:
| Masukan Pelanggan | menganggur RuntimeSessionTimeout | MaxLifetime | Hasil |
|---|---|---|---|
|
Tidak ada konfigurasi |
900 detik |
28800-an |
Menggunakan default: 900-an dan 28800s |
|
Hanya MaxLifetime yang disediakan |
900 detik |
Nilai pelanggan |
Jika maxLifetime ≤ 900s: menggunakan MaxLifetime untuk keduanya If maxLifetime > 900s: menggunakan 900s untuk idle, nilai pelanggan untuk maks |
|
Hanya IdleTimeout yang disediakan |
Nilai pelanggan |
28800-an |
Menggunakan nilai pelanggan untuk idle, 28800 untuk maks |
|
Kedua nilai yang disediakan |
Nilai pelanggan |
Nilai pelanggan |
Menggunakan nilai pelanggan apa adanya |
Nilai default
-
idleRuntimeSessionTimeout: 900 detik (15 menit) -
maxLifetime: 28800 detik (8 jam)
Buat AgentCore Runtime dengan konfigurasi siklus hidup
Anda dapat menentukan konfigurasi siklus hidup saat membuat Runtime. AgentCore
import boto3 client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') try: response = client.create_agent_runtime( agentRuntimeName='my_agent_runtime', agentRuntimeArtifact={ 'containerConfiguration': { 'containerUri': '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest' } }, lifecycleConfiguration={ 'idleRuntimeSessionTimeout': 1800, # 30 minutes, configurable 'maxLifetime': 14400 # 4 hours }, networkConfiguration={'networkMode': 'PUBLIC'}, roleArn='arn:aws:iam::123456789012:role/AgentRuntimeRole' ) print(f"Agent runtime created: {response['agentRuntimeArn']}") except client.exceptions.ValidationException as e: print(f"Validation error: {e}") except Exception as e: print(f"Error creating agent runtime: {e}")
Memperbarui konfigurasi siklus hidup untuk Runtime AgentCore
Anda dapat memperbarui konfigurasi siklus hidup untuk Runtime yang ada AgentCore .
import boto3 client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') agent_runtime_id = 'my_agent_runtime' try: response = client.update_agent_runtime( agentRuntimeId=agent_runtime_id, agentRuntimeArtifact={ 'containerConfiguration': { 'containerUri': '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest' } }, networkConfiguration={'networkMode': 'PUBLIC'}, roleArn='arn:aws:iam::123456789012:role/AgentRuntimeRole', lifecycleConfiguration={ 'idleRuntimeSessionTimeout': 600, # 10 minutes 'maxLifetime': 7200 # 2 hours } ) print("Lifecycle configuration updated successfully") except client.exceptions.ValidationException as e: print(f"Validation error: {e}") except client.exceptions.ResourceNotFoundException: print("Agent runtime not found") except Exception as e: print(f"Error updating configuration: {e}")
Dapatkan konfigurasi siklus hidup untuk Runtime AgentCore
Anda bisa mendapatkan konfigurasi siklus hidup untuk Runtime yang ada AgentCore .
import boto3 client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') def get_lifecycle_config(): try: response = client.get_agent_runtime(agentRuntimeId="my_agent_runtime") lifecycle_config = response.get('lifecycleConfiguration', {}) idle_timeout = lifecycle_config.get('idleRuntimeSessionTimeout', 900) max_lifetime = lifecycle_config.get('maxLifetime', 28800) print(f"Current configuration:") print(f" Idle timeout: {idle_timeout}s ({idle_timeout//60} minutes)") print(f" Max lifetime: {max_lifetime}s ({max_lifetime//3600} hours)") return lifecycle_config except Exception as e: print(f"Error retrieving configuration: {e}") return None # Usage config = get_lifecycle_config() print(config)
Validasi dan kendala
Konfigurasi siklus hidup mencakup aturan validasi dan kendala untuk mencegah konfigurasi yang tidak valid.
Kesalahan validasi umum
import boto3 client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') try: client.create_agent_runtime( agentRuntimeName='invalid_config_agent', agentRuntimeArtifact={ 'containerConfiguration': { 'containerUri': '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest' } }, lifecycleConfiguration={ 'idleRuntimeSessionTimeout': 3600, # 1 hour, configurable 'maxLifetime': 1800 # 30 minutes - INVALID! }, networkConfiguration={'networkMode': 'PUBLIC'}, roleArn='arn:aws:iam::123456789012:role/AgentRuntimeRole', ) except client.exceptions.ValidationException as e: print(f"Validation failed: {e}") # Output: idleRuntimeSessionTimeout must be less than or equal to maxLifetime
Fungsi pembantu validasi
def validate_lifecycle_config(idle_timeout, max_lifetime): """Validate lifecycle configuration before API call""" errors = [] # Check range constraints if not (1 <= idle_timeout <= 28800): errors.append(f"idleRuntimeSessionTimeout must be between 1 and 28800 seconds") if not (1 <= max_lifetime <= 28800): errors.append(f"maxLifetime must be between 1 and 28800 seconds") # Check relationship constraint if idle_timeout > max_lifetime: errors.append(f"idleRuntimeSessionTimeout ({idle_timeout}s) must be ≤ maxLifetime ({max_lifetime}s)") return errors # Usage errors = validate_lifecycle_config(3600, 1800) if errors: for error in errors: print(f"Validation error: {error}") else: print("Configuration is valid")
Pengaturan siklus hidup dan sesi runtime
Pengaturan konfigurasi siklus hidup yang Anda tetapkan diterapkan ke setiap sesi runtime individual. Saat Anda memanggil agen dengan spesifikruntimeSessionId, AgentCore Runtime menyediakan microVM khusus untuk sesi itu. Batas waktu siklus hidup (idleRuntimeSessionTimeoutdanmaxLifetime) mengatur siklus hidup instance microVM tertentu tersebut.
import boto3 import json import uuid client = boto3.client('bedrock-agentcore', region_name='us-west-2') # Each unique runtimeSessionId gets its own microVM with lifecycle settings applied session_id_user_1 = str(uuid.uuid4()) # User 1's session session_id_user_2 = str(uuid.uuid4()) # User 2's session # First invocation for User 1 - creates new microVM with lifecycle timers response1 = client.invoke_agent_runtime( agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent', runtimeSessionId=session_id_user_1, # Dedicated microVM for this session payload=json.dumps({"prompt": "Hello from User 1"}).encode() ) # First invocation for User 2 - creates separate microVM with its own lifecycle timers response2 = client.invoke_agent_runtime( agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent', runtimeSessionId=session_id_user_2, # Different microVM for this session payload=json.dumps({"prompt": "Hello from User 2"}).encode() ) # Subsequent invocations to same session reuse the existing microVM # The idle timeout resets with each invocation to the same session response3 = client.invoke_agent_runtime( agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent', runtimeSessionId=session_id_user_1, # Reuses User 1's existing microVM payload=json.dumps({"prompt": "Follow-up from User 1"}).encode() )
Poin penting tentang pengaturan dan sesi siklus hidup:
-
Per-session isolasi: Masing-masing
runtimeSessionIdmendapatkan microVM-nya sendiri dengan pengatur waktu siklus hidup independen -
Reset timer idle:
idleRuntimeSessionTimeoutReset setiap kali Anda menjalankan sesi yang sama -
Penegakan seumur hidup maksimum:
maxLifetimeTimer dimulai saat microVM pertama kali dibuat dan tidak dapat diatur ulang -
Pengakhiran sesi: Ketika batas waktu tercapai, hanya microVM sesi tertentu yang dihentikan. Sesi dapat dilanjutkan dengan microVM baru yang disediakan.
Tip
Setiap sesi microVM menggunakan aset kode (agentRuntimeArtifact) yang digunakan pada saat pembuatan microVM. Jika Anda memperbarui runtime agen Anda dengan kode baru, sesi yang ada akan terus menggunakan versi sebelumnya hingga berakhir dan sesi baru dibuat.
Praktik terbaik
Ikuti praktik terbaik ini saat mengonfigurasi pengaturan siklus hidup untuk pemanfaatan sumber daya dan pengalaman pengguna yang optimal.
Rekomendasi
-
Mulai dengan default (900-an idle, 28800s max) dan sesuaikan berdasarkan pola penggunaan
-
Pantau durasi sesi untuk mengoptimalkan nilai batas waktu
-
Gunakan batas waktu yang lebih singkat untuk lingkungan pengembangan untuk menghemat biaya
-
Pertimbangkan pengalaman pengguna - batas waktu yang terlalu singkat dapat mengganggu pengguna aktif
-
Uji perubahan konfigurasi di lingkungan non-produksi terlebih dahulu
-
Dokumentasikan alasan batas waktu untuk kasus penggunaan spesifik Anda
Pola umum
| Kasus Penggunaan | Batas Waktu Idle | Max Seumur Hidup | Dasar Pemikiran |
|---|---|---|---|
|
Obrolan Interaktif |
10-15 menit |
2-4 jam |
Menyeimbangkan daya tanggap dengan penggunaan sumber daya |
|
Pemrosesan Batch |
30 menit |
8 jam |
Memungkinkan operasi yang berjalan lama |
|
Pengembangan |
5 menit |
30 menit |
Pembersihan cepat untuk pengoptimalan biaya |
|
API Produksi |
15 menit |
4 jam |
Beban kerja produksi standar |
|
Demo/Testing |
2 menit |
15 menit |
Pembersihan agresif untuk penggunaan sementara |