View a markdown version of this page

Configurar los ajustes del AgentCore ciclo de vida de Amazon Bedrock - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar los ajustes del AgentCore ciclo de vida de Amazon Bedrock

El parámetro LifecycleConfiguration de entrada que CreateAgentRuntime le 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 puedes configurar los ajustes del ciclo de vida de un AgentCore Runtime existente con la UpdateAgentRuntime operación.

Atributos de configuración

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

idleRuntimeSessionTimeout

Entero

60—28800 (microVMS)

60—1209600 (instancias)

No

Tiempo de espera en segundos para las sesiones de tiempo de ejecución inactivas. Cuando una sesión permanece inactiva durante este tiempo, se cancelará. La finalización puede durar hasta 15 segundos debido a la finalización del registro y de otros procesos. Predeterminado: 900 segundos (15 minutos)

maxLifetime

Entero

60—28800 (microVM)

60—1209600 (instancias)

No

Duración máxima de la instancia en segundos. Una vez alcanzadas, las instancias inicializarán la terminación. La finalización puede durar hasta 15 segundos debido a la finalización del registro y de otros procesos. Predeterminado: 28800 segundos (8 horas). La sesión en sí misma puede durar más tiempo con una nueva instancia aprovisionada.

nota

El valor máximo de ambos atributos depende del tipo de procesamiento del AgentCore Runtime. Los tiempos de ejecución que utilizan micromáquinas virtuales aceptan hasta 28800 segundos (8 horas). Los tiempos de ejecución que utilizan un proveedor de capacidad (instancias) aceptan hasta 1209600 segundos (14 días). Si especificas un valor superior al máximo para tu tipo de procesamiento, la solicitud fallará con un. ValidationException Para obtener más información, consulte Instancias .

Restricciones

  • idleRuntimeSessionTimeoutdebe ser inferior o igual a maxLifetime

  • Ambos valores se miden en segundos

  • Intervalo válido para tiempos de ejecución que utilizan microVM: de 60 a 28800 segundos (hasta 8 horas)

  • Intervalo válido para tiempos de ejecución que utilizan un proveedor de capacidad (instancias): de 60 a 1209600 segundos (hasta 14 días)

  • En el caso de un tiempo de ejecución que utilice un proveedor de capacidad, también maxLifetime debe ser inferior o igual al maxLifetime que el proveedor de capacidad define en su InstanceLifecycleConfiguration

Comportamiento predeterminado

Cuando no LifecycleConfiguration se proporciona o contiene valores nulos, la plataforma aplica la siguiente lógica:

Aportación del cliente inactivo RuntimeSessionTimeout Vida útil máxima Resultado

Sin configuración

900 segundos

2800 s

Utiliza los valores predeterminados: 900 y 28800

Solo se proporciona MaxLifetime

900 segundos

Valor para el cliente

Si MaxLifetime es inferior a 900 s: usa MaxLifetime para ambos Si MaxLifetime es superior a 900 s: usa 900 s para inactividad, valor para el cliente como máximo

Solo se proporciona IdleTimeout

Valor para el cliente

28800

Utiliza el valor del cliente para el tiempo de inactividad y 28800 segundos para el máximo

Se proporcionan ambos valores

Valor para el cliente

Valor para el cliente

Utiliza los valores de los clientes tal como están

Valores de predeterminados

  • idleRuntimeSessionTimeout: 900 segundos (15 minutos)

  • maxLifetime: 28800 segundos (8 horas)

Cree un AgentCore motor de ejecución con una configuración del ciclo de vida

Puede especificar una configuración de ciclo de vida al crear un AgentCore Runtime.

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 Runtime

Puede actualizar la configuración del ciclo de vida de un AgentCore Runtime 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 Runtime

Puede obtener la configuración del ciclo de vida de un AgentCore Runtime 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. Si tu solicitud infringe alguna de las siguientes reglas, se produce un error conValidationException:

  • Cualquiera de los valores es inferior a 60 segundos o superior al máximo para el tipo de procesamiento del tiempo de ejecución (28800 segundos para las micromáquinas virtuales, 1209600 segundos para las instancias).

  • idleRuntimeSessionTimeoutmaxLifetimees mayor que.

  • Para un tiempo de ejecución que usa un proveedor de capacidad, maxLifetime es mayor maxLifetime que el que el proveedor de capacidad define en suInstanceLifecycleConfiguration. Para ejecutar sesiones durante más tiempo del permitido por el proveedor de capacidad, maxLifetime primero aumente la capacidad del proveedor.

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

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

Configuración del ciclo de vida y sesiones 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 a un agente con una configuración específicaruntimeSessionId, AgentCore Runtime aprovisiona una microVM dedicada para esa sesión. Los tiempos de espera (idleRuntimeSessionTimeoutymaxLifetime) del ciclo de vida 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

  • Reinicio con temporizador inactivo: se idleRuntimeSessionTimeout restablece cada vez que se invoca la misma sesión

  • Duración máxima: el maxLifetime temporizador comienza 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 actualizas el tiempo de ejecución del agente con un código nuevo, las sesiones existentes seguirán usando 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 una utilización óptima de los recursos y una experiencia de usuario.

Recomendaciones

  • Comience con los valores predeterminados (900 segundos inactivos, 28800 segundos como máximo) y ajústelos en función de los patrones de uso

  • Comprueba tu tipo de procesamiento antes de superar las 8 horas; solo los tiempos de ejecución que utilizan un proveedor de capacidad (instancias) aceptan valores más largos maxLifetime

  • Supervisa 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 costos

  • 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 son de producción

  • Documente las razones 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

De 2 a 4 horas

Equilibre la capacidad de respuesta con el uso de los 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 costos

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