View a markdown version of this page

Configurar los ajustes del AgentCore ciclo de vida de Amazon Bedrock - Amazon Bedrock AgentCore

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.

Atributos de configuración

Atributo Tipo Rango (segundos) Obligatorio Description (Descripción)

idleRuntimeSessionTimeout

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)

maxLifetime

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

  • 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 runtimeSessionId tiene su propia microVM con temporizadores de ciclo de vida independientes

  • Restablecimiento del temporizador de inactividad: se idleRuntimeSessionTimeout restablece cada vez que se invoca la misma sesión

  • Cumplimiento de la vida útil máxima: el maxLifetime temporizador 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