

# Konfigurasikan pengaturan siklus AgentCore hidup Amazon Bedrock
<a name="runtime-lifecycle-settings"></a>

Parameter `LifecycleConfiguration` input untuk [CreateAgentRuntime](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateAgentRuntime.html)memungkinkan 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](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_UpdateAgentRuntime.html)

**Topics**
+ [Atribut konfigurasi](#configuration-attributes)
+ [Perilaku default](#default-behavior)
+ [Buat AgentCore Runtime dengan konfigurasi siklus hidup](#create-agent-runtime-with-lifecycle)
+ [Memperbarui konfigurasi siklus hidup untuk Runtime AgentCore](#update-lifecycle-configuration)
+ [Dapatkan konfigurasi siklus hidup untuk Runtime AgentCore](#update-lifecycle-configuration)
+ [Validasi dan kendala](#validation-and-constraints)
+ [Pengaturan siklus hidup dan sesi runtime](#lifecycle-and-session-relationship)
+ [Praktik terbaik](#best-practices)

## Atribut konfigurasi
<a name="configuration-attributes"></a>


| 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
<a name="constraints"></a>
+  `idleRuntimeSessionTimeout`harus kurang dari atau sama dengan `maxLifetime` 
+ Kedua nilai diukur dalam hitungan detik
+ Rentang yang valid: 60 hingga 28800 detik (hingga 8 jam)

## Perilaku default
<a name="default-behavior"></a>

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
<a name="default-values"></a>
+  `idleRuntimeSessionTimeout`: **900 detik** (15 menit)
+  `maxLifetime`: **28800 detik** (8 jam)

## Buat AgentCore Runtime dengan konfigurasi siklus hidup
<a name="create-agent-runtime-with-lifecycle"></a>

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
<a name="update-lifecycle-configuration"></a>

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
<a name="update-lifecycle-configuration"></a>

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
<a name="validation-and-constraints"></a>

Konfigurasi siklus hidup mencakup aturan validasi dan kendala untuk mencegah konfigurasi yang tidak valid.

### Kesalahan validasi umum
<a name="common-validation-errors"></a>

```
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
<a name="validation-helper-function"></a>

```
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
<a name="lifecycle-and-session-relationship"></a>

Pengaturan konfigurasi siklus hidup yang Anda tetapkan diterapkan ke setiap sesi runtime individual. Saat Anda memanggil agen dengan spesifik`runtimeSessionId`, AgentCore Runtime menyediakan microVM khusus untuk sesi itu. Batas waktu siklus hidup (`idleRuntimeSessionTimeout`dan`maxLifetime`) 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
<a name="best-practices"></a>

Ikuti praktik terbaik ini saat mengonfigurasi pengaturan siklus hidup untuk pemanfaatan sumber daya dan pengalaman pengguna yang optimal.

### Rekomendasi
<a name="recommendations"></a>
+  **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
<a name="common-patterns"></a>


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