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.
Temas
Atributos de configuración
| Atributo | Tipo | Rango (segundos) | Obligatorio | Description (Descripción) |
|---|---|---|---|---|
|
|
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) |
|
|
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 amaxLifetime -
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
maxLifetimedebe ser inferior o igual almaxLifetimeque el proveedor de capacidad define en suInstanceLifecycleConfiguration
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,
maxLifetimees mayormaxLifetimeque el que el proveedor de capacidad define en suInstanceLifecycleConfiguration. Para ejecutar sesiones durante más tiempo del permitido por el proveedor de capacidad,maxLifetimeprimero 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
runtimeSessionIdtiene su propia microVM con temporizadores de ciclo de vida independientes -
Reinicio con temporizador inactivo: se
idleRuntimeSessionTimeoutrestablece cada vez que se invoca la misma sesión -
Duración máxima: el
maxLifetimetemporizador 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 |