View a markdown version of this page

Konfigurasikan pengaturan siklus AgentCore hidup Amazon Bedrock - Batuan Dasar Amazon AgentCore

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

Atribut konfigurasi

Atribut Tipe Rentang (detik) Diperlukan Deskripsi

idleRuntimeSessionTimeout

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)

maxLifetime

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 dengan maxLifetime

  • 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 runtimeSessionId mendapatkan microVM-nya sendiri dengan pengatur waktu siklus hidup independen

  • Reset timer idle: idleRuntimeSessionTimeout Reset setiap kali Anda menjalankan sesi yang sama

  • Penegakan seumur hidup maksimum: maxLifetime Timer 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