View a markdown version of this page

Configurazione delle impostazioni del ciclo di AgentCore vita di Amazon Bedrock - Fondamento Amazon AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione delle impostazioni del ciclo di AgentCore vita di Amazon Bedrock

Il parametro LifecycleConfiguration di input to CreateAgentRuntime consente di gestire il ciclo di vita delle sessioni e delle risorse di runtime in Amazon Bedrock Runtime. AgentCore Questa configurazione aiuta a ottimizzare l'utilizzo delle risorse eliminando automaticamente le sessioni inattive e impedendo che le istanze a 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

Attributi di configurazione

Attributo Tipo Intervallo (secondi) Richiesto Description

idleRuntimeSessionTimeout

Numero intero

60—28800 (microVMS)

60-1209600 (istanze)

No

Timeout in secondi per le sessioni di runtime inattive. Quando una sessione rimane inattiva per questa durata, verrà interrotta. La terminazione può durare fino a 15 secondi a causa della registrazione e del completamento di altri processi. Impostazione predefinita: 900 secondi (15 minuti)

maxLifetime

Numero intero

60—28800 (microVMS)

60-1209600 (istanze)

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 oltre tale limite con il provisioning di una nuova istanza.

Nota

Il valore massimo per entrambi gli attributi dipende dal tipo di elaborazione del Runtime. AgentCore I runtime che utilizzano MicroVMS accettano fino a 28800 secondi (8 ore). I runtime che utilizzano un fornitore di capacità (istanze) accettano fino a 1209600 secondi (14 giorni). Se si specifica un valore superiore al valore massimo per il tipo di elaborazione, la richiesta ha esito negativo con un. ValidationException Per ulteriori informazioni, consulta Istanze .

Vincoli

  • idleRuntimeSessionTimeoutdeve essere minore o uguale a maxLifetime

  • Entrambi i valori vengono misurati in secondi

  • Intervallo valido per i runtime che utilizzano MicroVMS: da 60 a 28800 secondi (fino a 8 ore)

  • Intervallo valido per i runtime che utilizzano un fornitore di capacità (istanze): da 60 a 1209600 secondi (fino a 14 giorni)

  • Per un runtime che utilizza un fornitore di capacità, maxLifetime deve inoltre essere inferiore o uguale a maxLifetime quello definito dal fornitore di capacità nel suo InstanceLifecycleConfiguration

Comportamento predefinito

Quando non LifecycleConfiguration è fornito o contiene valori nulli, la piattaforma applica la seguente logica:

Inserimento del cliente inattivo RuntimeSessionTimeout Durata massima Risultato

Nessuna configurazione

900 sec

28800

Utilizza i valori predefiniti: 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

È fornito solo IdleTimeout

Valore per il cliente

28800

Utilizza il valore per il cliente per l'inattività, 28800 per il massimo

Entrambi i valori forniti

Valore per il cliente

Valore per il cliente

Utilizza i valori dei clienti così come sono

Valori predefiniti

  • idleRuntimeSessionTimeout: 900 secondi (15 minuti)

  • maxLifetime: 28800 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}")

Aggiornare 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 evitare configurazioni non valide. Se la tua richiesta viola una delle seguenti regole, non riesce con: ValidationException

  • Entrambi i valori sono inferiori a 60 secondi o superiori al massimo per il tipo di elaborazione del runtime (28800 secondi per MicroVMS, 1209600 secondi per le istanze).

  • idleRuntimeSessionTimeoutmaxLifetimeè maggiore di.

  • Per un runtime che utilizza un fornitore di capacità, maxLifetime è maggiore di quello maxLifetime che il fornitore di capacità definisce nel suoInstanceLifecycleConfiguration. Per eseguire le sessioni più a lungo di quanto consentito dal fornitore di capacità, aumenta maxLifetime innanzitutto la capacità del fornitore.

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 ausiliaria per la convalida

MICROVM_MAX_SECONDS = 28800 # 8 hours INSTANCES_MAX_SECONDS = 1209600 # 14 days MIN_SECONDS = 60 def validate_lifecycle_config(idle_timeout, max_lifetime, uses_capacity_provider=False): """Validate lifecycle configuration before API call""" errors = [] # The maximum depends on the compute type of the runtime maximum = INSTANCES_MAX_SECONDS if uses_capacity_provider else MICROVM_MAX_SECONDS # Check range constraints if not (MIN_SECONDS <= idle_timeout <= maximum): errors.append(f"idleRuntimeSessionTimeout must be between {MIN_SECONDS} and {maximum} seconds") if not (MIN_SECONDS <= max_lifetime <= maximum): errors.append(f"maxLifetime must be between {MIN_SECONDS} and {maximum} 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 uno specificoruntimeSessionId, AgentCore Runtime fornisce una MicroVM dedicata per quella sessione. I timeout (idleRuntimeSessionTimeoutemaxLifetime) del ciclo di vita 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 runtimeSessionId ha la propria microVM con timer del ciclo di vita indipendenti

  • Reimpostazione del timer di inattività: viene ripristinato ogni volta che si idleRuntimeSessionTimeout richiama la stessa sessione

  • Applicazione della durata massima: il maxLifetime timer inizia quando la MicroVM viene creata per la prima volta e non può essere ripristinato

  • Termine della sessione: quando viene raggiunto uno dei 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à, massimo 28800 secondi) e aggiusta in base ai modelli di utilizzo

  • Controlla il tipo di elaborazione prima di passare a più di 8 ore: solo i runtime che maxLifetime utilizzano un fornitore di capacità (Istanze) accettano valori più lunghi

  • Monitora la durata della sessione per ottimizzare i valori di timeout

  • Usa timeout più brevi per gli ambienti di sviluppo per risparmiare sui 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 la logica 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

Bilancia 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