Configurar los ajustes del AgentCore ciclo de vida de Amazon Bedrock
El parámetro LifecycleConfiguration de entrada CreateAgentRuntimele permite administrar el ciclo de vida de las sesiones y los recursos en tiempo de ejecución en Amazon Bedrock AgentCore Runtime. Esta configuración ayuda a optimizar la utilización de los recursos al eliminar automáticamente las sesiones inactivas y evitar que las instancias de ejecución prolongada consuman recursos de forma indefinida.
También puede configurar los ajustes del ciclo de vida de un entorno de AgentCore ejecución existente con la UpdateAgentRuntimeoperación.
Temas
Cree un AgentCore entorno de ejecución con la configuración del ciclo de vida
Actualice la configuración del ciclo de vida de un AgentCore entorno de ejecución
Obtenga la configuración del ciclo de vida de un AgentCore entorno de ejecución
Configuración del ciclo de vida y sesiones de tiempo de ejecución
Atributos de configuración
| Atributo | Tipo | Rango (segundos) | Obligatorio | Description (Descripción) |
|---|---|---|---|---|
|
|
Entero |
60-2800 |
No |
Tiempo de espera en segundos para las sesiones de tiempo de ejecución inactivas. Cuando una sesión permanece inactiva durante este período, se activará la finalización. La finalización puede durar hasta 15 segundos debido a la finalización del registro y otros procesos. Predeterminado: 900 segundos (15 minutos) |
|
|
Entero |
60-2800 |
No |
Vida útil máxima de la instancia en segundos. Una vez alcanzada, las instancias inicializarán la terminación. La terminación puede durar hasta 15 segundos debido a la finalización del registro y otros procesos. Predeterminado: 28800 segundos (8 horas). La sesión en sí misma puede persistir más tiempo si se aprovisiona una nueva instancia. |
Restricciones
-
idleRuntimeSessionTimeoutdebe ser inferior o igual amaxLifetime -
Ambos valores se miden en segundos
-
Rango válido: de 60 a 28800 segundos (hasta 8 horas)
Comportamiento predeterminado
Cuando no LifecycleConfiguration se proporciona o contiene valores nulos, la plataforma aplica la siguiente lógica:
| Aportaciones del cliente | inactivo RuntimeSessionTimeout | Vida útil máxima | Resultado |
|---|---|---|---|
|
Sin configuración |
900 segundos |
2800 s |
Utiliza los valores predeterminados: 900s y 28800s |
|
Solo se proporciona MaxLifetime |
900 segundos |
Valor para el cliente |
Si MaxLifetime ≤ 900 s: usa MaxLifetime para ambos; si MaxLifetime es superior a 900 s: usa 900 s para inactivo, valor para el cliente |
|
Solo se proporciona IdleTimeout |
Valor para el cliente |
28800 s |
Utiliza el valor del cliente para el tiempo de inactividad, 28800 segundos para el máximo |
|
Se proporcionaron ambos valores |
Valor para el cliente |
Valor para el cliente |
Utiliza los valores del cliente tal como están |
Valores predeterminados
-
idleRuntimeSessionTimeout: 900 segundos (15 minutos) -
maxLifetime: 28800 segundos (8 horas)
Cree un AgentCore entorno de ejecución con la configuración del ciclo de vida
Puede especificar una configuración de ciclo de vida al crear un AgentCore entorno de ejecución.
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}")
Actualice la configuración del ciclo de vida de un AgentCore entorno de ejecución
Puede actualizar la configuración del ciclo de vida de un AgentCore entorno de ejecución existente.
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}")
Obtenga la configuración del ciclo de vida de un AgentCore entorno de ejecución
Puede obtener la configuración del ciclo de vida de un AgentCore entorno de ejecución existente.
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)
Validación y restricciones
La configuración del ciclo de vida incluye reglas y restricciones de validación para evitar configuraciones no válidas.
Errores de validación comunes
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
Función auxiliar de validación
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")
Configuración del ciclo de vida y sesiones de tiempo de ejecución
Los ajustes de configuración del ciclo de vida que defina se aplican a cada sesión de tiempo de ejecución individual. Cuando se invoca un agente con un valor específicoruntimeSessionId, AgentCore Runtime aprovisiona una microVM dedicada para esa sesión. Los tiempos de espera del ciclo de vida (idleRuntimeSessionTimeoutymaxLifetime) rigen el ciclo de vida de esa instancia de microVM específica.
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() )
Puntos clave sobre la configuración y las sesiones del ciclo de vida:
-
Per-session aislamiento: cada una
runtimeSessionIdtiene su propia microVM con temporizadores de ciclo de vida independientes -
Restablecimiento del temporizador de inactividad: se
idleRuntimeSessionTimeoutrestablece cada vez que se invoca la misma sesión -
Cumplimiento de la vida útil máxima: el
maxLifetimetemporizador se inicia cuando se crea la microVM por primera vez y no se puede restablecer -
Finalización de la sesión: cuando se agota el tiempo de espera, solo finaliza la microVM de esa sesión específica. La sesión se puede reanudar con una nueva microVM aprovisionada.
sugerencia
Cada sesión de microVM utiliza los activos de código (agentRuntimeArtifact) que se implementaron en el momento de la creación de la microVM. Si actualiza el tiempo de ejecución del agente con un código nuevo, las sesiones existentes seguirán utilizando la versión anterior hasta que finalicen y se creen nuevas sesiones.
Prácticas recomendadas
Siga estas prácticas recomendadas al configurar los ajustes del ciclo de vida para optimizar la utilización de los recursos y la experiencia del usuario.
Recomendaciones
-
Comience con los valores predeterminados (900 s inactivos, 28800 s como máximo) y ajústelos en función de los patrones de uso
-
Supervise la duración de la sesión para optimizar los valores de tiempo de espera
-
Utilice tiempos de espera más cortos para los entornos de desarrollo a fin de ahorrar costes
-
Tenga en cuenta la experiencia del usuario: los tiempos de espera demasiado cortos pueden interrumpir a los usuarios activos
-
Pruebe primero los cambios de configuración en entornos que no sean de producción
-
Documente los motivos del tiempo de espera para su caso de uso específico
Patrones comunes
| Caso de uso | Tiempo de inactividad | Vida útil máxima | Justificación |
|---|---|---|---|
|
Chat interactivo |
De 10 a 15 minutos |
2-4 horas |
Equilibre la capacidad de respuesta con el uso de recursos |
|
Procesamiento por lotes |
30 minutos |
8 horas |
Permiten operaciones de larga duración |
|
Desarrollo |
5 minutos |
30 minutos |
Limpieza rápida para optimizar los costes |
|
API de producción |
15 minutos |
4 horas |
Carga de trabajo de producción estándar |
|
Demo/Testing |
2 minutos |
15 minutos |
Limpieza intensiva para uso temporal |