Configurazione delle impostazioni del ciclo di AgentCore vita di Amazon Bedrock
Il parametro LifecycleConfiguration di input CreateAgentRuntimeconsente di gestire il ciclo di vita delle sessioni e delle risorse di runtime in Amazon AgentCore Bedrock Runtime. Questa configurazione aiuta a ottimizzare l'utilizzo delle risorse eliminando automaticamente le sessioni inattive e impedendo che le istanze con esecuzione prolungata consumino risorse a tempo indeterminato.
È inoltre possibile configurare le impostazioni del ciclo di vita per un Runtime esistente con l'operazione. AgentCore UpdateAgentRuntime
Argomenti
Attributi di configurazione
| Attributo | Tipo | Intervallo (secondi) | Richiesto | Description |
|---|---|---|---|---|
|
|
Numero intero |
60-28800 |
No |
Timeout in secondi per le sessioni di runtime inattive. Quando una sessione rimane inattiva per questa durata, attiverà l'interruzione. La terminazione può durare fino a 15 secondi a causa della registrazione e del completamento di altri processi. Impostazione predefinita: 900 secondi (15 minuti) |
|
|
Numero intero |
60-28800 |
No |
Durata massima dell'istanza in secondi. Una volta raggiunta, le istanze inizializzeranno la terminazione. La terminazione può durare fino a 15 secondi a causa della registrazione e del completamento di altri processi. Impostazione predefinita: 28800 secondi (8 ore). La sessione stessa può persistere anche oltre tale termine con il provisioning di una nuova istanza. |
Vincoli
-
idleRuntimeSessionTimeoutdeve essere minore o uguale amaxLifetime -
Entrambi i valori vengono misurati in secondi
-
Intervallo valido: da 60 a 28800 secondi (fino a 8 ore)
Comportamento predefinito
Quando non LifecycleConfiguration viene fornito o contiene valori nulli, la piattaforma applica la seguente logica:
| Input del cliente | inattivo RuntimeSessionTimeout | Durata massima | Risultato |
|---|---|---|---|
|
Nessuna configurazione |
900 sec |
2800 s |
Utilizza le impostazioni predefinite: 900s e 28800s |
|
Viene fornito solo MaxLifetime |
900 sec |
Valore per il cliente |
Se maxLifetime ≤ 900s: utilizza maxLifetime per entrambi Se maxLifetime > 900s: utilizza 900s per inattività, valore cliente per max |
|
Viene fornito solo idleTimeout |
Valore per il cliente |
28800 |
Utilizza il valore del cliente per l'inattività, 28800 s per il valore massimo |
|
Entrambi i valori forniti |
Valore per il cliente |
Valore per il cliente |
Utilizza i valori del cliente così come sono |
Valori predefiniti
-
idleRuntimeSessionTimeout: 900 secondi (15 minuti) -
maxLifetime: 2800 secondi (8 ore)
Crea un AgentCore runtime con configurazione del ciclo di vita
È possibile specificare una configurazione del ciclo di vita quando si crea un 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}")
Aggiornate la configurazione del ciclo di vita per un Runtime AgentCore
È possibile aggiornare la configurazione del ciclo di vita per un Runtime esistente. 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}")
Ottieni la configurazione del ciclo di vita per un Runtime AgentCore
È possibile ottenere la configurazione del ciclo di vita per un Runtime esistente. 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)
Convalida e vincoli
La configurazione del ciclo di vita include regole e vincoli di convalida per prevenire configurazioni non valide.
Errori di convalida comuni
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
Funzione di supporto alla convalida
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")
Impostazioni del ciclo di vita e sessioni di runtime
Le impostazioni di configurazione del ciclo di vita definite vengono applicate a ogni singola sessione di runtime. Quando si richiama un agente con una specificaruntimeSessionId, AgentCore Runtime effettua il provisioning di una microVM dedicata per quella sessione. I timeout del ciclo di vita (idleRuntimeSessionTimeoutemaxLifetime) regolano il ciclo di vita di quella specifica istanza MicroVM.
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() )
Punti chiave sulle impostazioni e sulle sessioni del ciclo di vita:
-
Per-session isolamento: ognuno dispone della propria
runtimeSessionIdmicroVM con timer del ciclo di vita indipendenti -
Reset del timer di inattività: viene ripristinato ogni volta che si
idleRuntimeSessionTimeoutrichiama la stessa sessione -
Applicazione massima per tutta la durata: il
maxLifetimetimer si avvia quando la microVM viene creata per la prima volta e non può essere ripristinato -
Terminazione della sessione: quando viene raggiunto uno dei due timeout, viene terminata solo la microVM di quella sessione specifica. La sessione può essere ripresa con il provisioning di una nuova MicroVM.
Suggerimento
Ogni sessione MicroVM utilizza le risorse di codice (agentRuntimeArtifact) che sono state distribuite al momento della creazione di MicroVM. Se si aggiorna il runtime dell'agente con un nuovo codice, le sessioni esistenti continueranno a utilizzare la versione precedente fino al termine e alla creazione di nuove sessioni.
Best practice
Segui queste best practice per configurare le impostazioni del ciclo di vita per un utilizzo ottimale delle risorse e un'esperienza utente.
Raccomandazioni
-
Inizia con le impostazioni predefinite (900 secondi di inattività, 28800 secondi massimo) e regola in base ai modelli di utilizzo
-
Monitora la durata della sessione per ottimizzare i valori di timeout
-
Utilizza timeout più brevi per gli ambienti di sviluppo per ridurre i costi
-
Considerate l'esperienza utente: timeout troppo brevi possono interrompere gli utenti attivi
-
Verifica prima le modifiche alla configurazione in ambienti non di produzione
-
Documenta le motivazioni del timeout per il tuo caso d'uso specifico
Schemi comuni
| Caso d'uso | Tempo di inattività | Durata massima | Rationale |
|---|---|---|---|
|
Chat interattiva |
10-15 minuti |
2-4 ore |
Equilibra la reattività con l'utilizzo delle risorse |
|
Elaborazione in Batch |
30 minuti |
8 ore |
Consenti operazioni di lunga durata |
|
Sviluppo |
5 minuti |
30 minuti |
Pulizia rapida per l'ottimizzazione dei costi |
|
API di produzione |
15 minuti |
4 ore |
Carico di lavoro di produzione standard |
|
Demo/Testing |
2 minuti |
15 minuti |
Pulizia aggressiva per uso temporaneo |