Configurer les paramètres du AgentCore cycle de vie d'Amazon Bedrock
Le paramètre LifecycleConfiguration d'entrée vous CreateAgentRuntimepermet de gérer le cycle de vie des sessions d'exécution et des ressources dans Amazon Bedrock AgentCore Runtime. Cette configuration permet d'optimiser l'utilisation des ressources en nettoyant automatiquement les sessions inactives et en empêchant les instances de longue durée de consommer des ressources indéfiniment.
Vous pouvez également configurer les paramètres du cycle de vie d'un AgentCore Runtime existant avec l'UpdateAgentRuntimeopération.
Rubriques
Attributs de configuration
| Attribut | Type | Portée (secondes) | Obligatoire | Description |
|---|---|---|---|---|
|
|
Entier |
60-28800 |
Non |
Délai d'expiration en secondes pour les sessions d'exécution inactives. Lorsqu'une session reste inactive pendant cette durée, elle déclenche la fin. La résiliation peut durer jusqu'à 15 secondes en raison de la journalisation et de l'achèvement d'autres processus. Par défaut : 900 secondes (15 minutes) |
|
|
Entier |
60-28800 |
Non |
Durée de vie maximale de l'instance en secondes. Une fois atteintes, les instances initialiseront la résiliation. La résiliation peut durer jusqu'à 15 secondes en raison de la journalisation et de l'achèvement d'autres processus. Par défaut : 28 800 secondes (8 heures). La session elle-même peut persister au-delà de cette période avec une nouvelle instance provisionnée. |
Constaintes
-
idleRuntimeSessionTimeoutdoit être inférieur ou égal àmaxLifetime -
Les deux valeurs sont mesurées en secondes
-
Plage valide : 60 à 28 800 secondes (jusqu'à 8 heures)
Comportement par défaut
Lorsqu'il n'LifecycleConfigurationest pas fourni ou contient des valeurs nulles, la plateforme applique la logique suivante :
| Contribution du client | inactif RuntimeSessionTimeout | Durée de vie maximale | Résultat |
|---|---|---|---|
|
Aucune configuration |
900 secondes |
28800 s |
Utilise les valeurs par défaut : 900 s et 28800 s |
|
Seul MaxLifetime est fourni |
900 secondes |
Valeur pour le client |
Si MaxLifetime ≤ 900 s : utilise MaxLifetime pour les deux Si MaxLifetime > 900 s : utilise 900 s pour le mode inactif, la valeur client pour le maximum |
|
Seul IdleTimeout est fourni |
Valeur pour le client |
28800 s |
Utilise la valeur du client pour le temps d'inactivité, 28800 s pour le maximum |
|
Les deux valeurs sont fournies |
Valeur pour le client |
Valeur pour le client |
Utilise les valeurs du client telles quelles |
Valeurs par défaut
-
idleRuntimeSessionTimeout: 900 secondes (15 minutes) -
maxLifetime: 28800 secondes (8 heures)
Création d'un AgentCore environnement d'exécution avec configuration du cycle de vie
Vous pouvez spécifier une configuration de cycle de vie lorsque vous créez 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}")
Mettre à jour la configuration du cycle de vie d'un AgentCore environnement d'exécution
Vous pouvez mettre à jour la configuration du cycle de vie d'un AgentCore Runtime existant.
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}")
Obtenez la configuration du cycle de vie d'un AgentCore environnement d'exécution
Vous pouvez obtenir la configuration du cycle de vie d'un AgentCore Runtime existant.
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)
Validation et contraintes
La configuration du cycle de vie inclut des règles de validation et des contraintes pour empêcher les configurations non valides.
Erreurs de validation courantes
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
Fonction d'aide à la validation
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")
Paramètres du cycle de vie et sessions d'exécution
Les paramètres de configuration du cycle de vie que vous définissez sont appliqués à chaque session d'exécution individuelle. Lorsque vous appelez un agent doté d'une fonction spécifiqueruntimeSessionId, AgentCore Runtime met en service une microVM dédiée pour cette session. Les délais d'expiration du cycle de vie (idleRuntimeSessionTimeoutetmaxLifetime) régissent le cycle de vie de cette instance microVM spécifique.
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() )
Points clés concernant les paramètres du cycle de vie et les sessions :
-
Per-session isolation : chacun dispose de sa
runtimeSessionIdpropre microVM avec des temporisateurs de cycle de vie indépendants -
Réinitialisation du délai d'inactivité :
idleRuntimeSessionTimeoutles réinitialisations à chaque fois que vous appelez la même session -
Application de la durée de vie maximale : le
maxLifetimetemporisateur démarre lorsque la microVM est créée pour la première fois et ne peut pas être réinitialisé -
Fin de session : lorsque l'un des délais est atteint, seule la microVM de cette session spécifique est interrompue. La session peut être reprise avec une nouvelle microVM provisionnée.
Astuce
Chaque session MicroVM utilise les actifs de code (agentRuntimeArtifact) qui ont été déployés au moment de la création de MicroVM. Si vous mettez à jour le moteur d'exécution de votre agent avec du nouveau code, les sessions existantes continueront à utiliser la version précédente jusqu'à ce qu'elles se terminent et que de nouvelles sessions soient créées.
Bonnes pratiques
Suivez ces bonnes pratiques lors de la configuration des paramètres du cycle de vie afin d'optimiser l'utilisation des ressources et l'expérience utilisateur.
Recommandations
-
Commencez par les valeurs par défaut (900 s en veille, 28 800 s maximum) et ajustez en fonction des habitudes d'utilisation
-
Surveillez la durée de la session pour optimiser les valeurs de délai d'expiration
-
Utilisez des délais d'attente plus courts pour les environnements de développement afin de réduire les coûts
-
Tenez compte de l'expérience utilisateur : des délais d'attente trop courts peuvent interrompre les utilisateurs actifs
-
Testez d'abord les modifications de configuration dans les environnements hors production
-
Documentez la justification du délai d'expiration pour votre cas d'utilisation spécifique
Schémas courants
| Cas d’utilisation | Délai d'inactivité | Durée de vie maximale | Justification |
|---|---|---|---|
|
Chat interactif |
10 à 15 minutes |
2 à 4 heures |
Trouvez l'équilibre entre réactivité et utilisation des ressources |
|
Traitement par lots |
30 minutes |
8 heures |
Permettre des opérations de longue durée |
|
Développement |
5 minutes |
30 minutes |
Nettoyage rapide pour optimiser les coûts |
|
API de production |
15 minutes |
4 heures |
Charge de production standard |
|
Demo/Testing |
2 minutes |
15 minutes |
Nettoyage agressif pour une utilisation temporaire |