Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configurer les paramètres de AgentCore cycle de vie d'Amazon Bedrock
Paramètre LifecycleConfiguration d'entrée qui vous CreateAgentRuntime permet 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 de cycle de vie d'un AgentCore environnement d'exécution existant avec l'UpdateAgentRuntimeopération.
Rubriques
Attributs de configuration
| Attribut | Type | Portée (secondes) | Obligatoire | Description |
|---|---|---|---|---|
|
|
Entier |
60 à 28 800 (microVM) 60 à 120 9600 (instances) |
Non |
Délai d'attente en secondes pour les sessions d'exécution inactives. Lorsqu'une session reste inactive pendant cette durée, elle est interrompue. 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 à 28 800 (microVM) 60 à 120 9600 (instances) |
Non |
Durée de vie maximale de l'instance en secondes. Une fois atteinte, 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. |
Note
La valeur maximale pour les deux attributs dépend du type de calcul du AgentCore Runtime. Les environnements d'exécution utilisant des micromachines virtuelles acceptent jusqu'à 28 800 secondes (8 heures). Les environnements d'exécution qui utilisent un fournisseur de capacité (instances) acceptent jusqu'à 1209600 secondes (14 jours). Si vous spécifiez une valeur supérieure au maximum pour votre type de calcul, la demande échoue avec unValidationException. Pour plus d'informations, consultez Instances .
Contraintes
-
idleRuntimeSessionTimeoutdoit être inférieur ou égal àmaxLifetime -
Les deux valeurs sont mesurées en secondes
-
Plage valide pour les environnements d'exécution utilisant des micromachines virtuelles : 60 à 28 800 secondes (jusqu'à 8 heures)
-
Plage valide pour les environnements d'exécution qui utilisent un fournisseur de capacité (instances) : 60 à 1209600 secondes (jusqu'à 14 jours)
-
Pour un environnement d'exécution qui utilise un fournisseur de capacité,
maxLifetimeil doit également être inférieur ou égal àmaxLifetimece que le fournisseur de capacité définit dans sonInstanceLifecycleConfiguration
Comportement par défaut
Lorsqu'il n'LifecycleConfigurationest pas fourni ou qu'il 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 années |
Utilise les valeurs par défaut : 900s et 28800s |
|
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 l'inactivité, la valeur client pour max |
|
Seul IdleTimeout est fourni |
Valeur pour le client |
28800 années |
Utilise la valeur client pour l'inactivité, 28800 s pour la valeur maximale |
|
Les deux valeurs ont été 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 pour un AgentCore environnement d'exécution
Vous pouvez mettre à jour la configuration du cycle de vie pour un AgentCore environnement d'exécution 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}")
Obtenir la configuration du cycle de vie d'un AgentCore environnement d'exécution
Vous pouvez obtenir la configuration du cycle de vie pour un AgentCore environnement d'exécution 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 éviter les configurations non valides. Si votre demande enfreint l'une des règles suivantes, elle échoue avec un message ValidationException :
-
L'une ou l'autre des valeurs est inférieure à 60 secondes ou supérieure au maximum pour le type de calcul du runtime (28 800 secondes pour les micromachines virtuelles, 1 209 600 secondes pour les instances).
-
idleRuntimeSessionTimeoutest supérieur àmaxLifetime. -
Pour un environnement d'exécution qui utilise un fournisseur de capacité,
maxLifetimeest supérieur à celuimaxLifetimeque le fournisseur de capacité définit dans sonInstanceLifecycleConfiguration. Pour exécuter des sessions plus longtemps que ne le permet le fournisseur de capacité, augmentez d'maxLifetimeabord la capacité du fournisseur de capacité.
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
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")
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 avec une session 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 de 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 de cycle de vie et les sessions :
-
Per-session isolation : chacune possède sa
runtimeSessionIdpropre microVM avec des temporisateurs de cycle de vie indépendants -
Réinitialisation du
idleRuntimeSessionTimeoutminuteur d'inactivité : réinitialisation à chaque fois que vous invoquez la même session -
Durée de vie maximale : le
maxLifetimechronomètre 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 un 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 de cycle de vie afin d'optimiser l'utilisation des ressources et l'expérience utilisateur.
Recommandations
-
Commencez par les valeurs par défaut (900 secondes d'inactivité, 28800 secondes maximum) et ajustez-les en fonction des habitudes d'utilisation
-
Vérifiez votre type de calcul avant de passer à 8 heures : seuls les environnements d'exécution qui utilisent un fournisseur de capacité (Instances) acceptent des valeurs plus longues
maxLifetime -
Surveillez la durée des sessions pour optimiser les valeurs de temporisation
-
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 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 |
|---|---|---|---|
|
Discussion interactive |
10 à 15 minutes |
2 à 4 heures |
Équilibrez la réactivité avec l'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 |