AgentCore Lebenszykluseinstellungen von Amazon Bedrock konfigurieren
Mit dem LifecycleConfiguration Eingabeparameter für CreateAgentRuntimekönnen Sie den Lebenszyklus von Runtime-Sitzungen und Ressourcen in Amazon Bedrock AgentCore Runtime verwalten. Diese Konfiguration trägt zur Optimierung der Ressourcennutzung bei, indem inaktive Sitzungen automatisch bereinigt werden und verhindert wird, dass Instances mit langer Laufzeit unbegrenzt Ressourcen verbrauchen.
Sie können mit dem Vorgang auch Lebenszykluseinstellungen für eine bestehende AgentCore Runtime konfigurieren. UpdateAgentRuntime
Themen
Konfigurationsattribute
| Attribut | Typ | Reichweite (Sekunden) | Erforderlich | Description |
|---|---|---|---|---|
|
|
Ganzzahl |
60-28800 |
Nein |
Timeout in Sekunden für inaktive Runtime-Sitzungen. Wenn eine Sitzung für diese Dauer inaktiv bleibt, wird sie beendet. Die Beendigung kann aufgrund der Protokollierung und anderer Prozessabschlüsse bis zu 15 Sekunden dauern. Standard: 900 Sekunden (15 Minuten) |
|
|
Ganzzahl |
60-28800 |
Nein |
Maximale Lebensdauer der Instanz in Sekunden. Sobald dies erreicht ist, initialisieren die Instanzen die Kündigung. Die Kündigung kann aufgrund der Protokollierung und anderer Prozessabschlüsse bis zu 15 Sekunden dauern. Standard: 28800 Sekunden (8 Stunden). Die Sitzung selbst kann darüber hinaus bestehen bleiben, wenn eine neue Instanz bereitgestellt wird. |
Beschränkungen
-
idleRuntimeSessionTimeoutmuss kleiner oder gleich seinmaxLifetime -
Beide Werte werden in Sekunden gemessen
-
Gültiger Bereich: 60 bis 28800 Sekunden (bis zu 8 Stunden)
Standardverhalten
Wenn nicht angegeben LifecycleConfiguration wird oder Nullwerte enthält, wendet die Plattform die folgende Logik an:
| Eingaben des Kunden | untätig RuntimeSessionTimeout | Max. Lebensdauer | Ergebnis |
|---|---|---|---|
|
Keine Konfiguration |
900 Sekunden |
28800 s |
Verwendet Standardwerte: 900s und 28800s |
|
Nur MaxLifetime wird bereitgestellt |
900 Sekunden |
Nutzen für den Kunden |
Wenn MaxLifetime ≤ 900s: verwendet MaxLifetime für beide Wenn MaxLifetime > 900s: verwendet 900s für Leerlauf, Kundenwert für max |
|
Nur IdleTimeout ist angegeben |
Nutzen für den Kunden |
28800s |
Verwendet den Kundenwert für den Leerlauf, 28800 für max. |
|
Beide Werte sind angegeben |
Nutzen für den Kunden |
Wert für den Kunden |
Verwendet Kundenwerte unverändert |
Standardwerte
-
idleRuntimeSessionTimeout: 900 Sekunden (15 Minuten) -
maxLifetime: 28800 Sekunden (8 Stunden)
Erstellen Sie eine AgentCore Runtime mit Lebenszykluskonfiguration
Sie können eine Lebenszykluskonfiguration angeben, wenn Sie eine AgentCore Runtime erstellen.
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}")
Aktualisieren Sie die Lebenszykluskonfiguration für eine AgentCore Runtime
Sie können die Lebenszykluskonfiguration für eine bestehende AgentCore Runtime aktualisieren.
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}")
Rufen Sie die Lebenszykluskonfiguration für eine AgentCore Runtime ab
Sie können die Lebenszykluskonfiguration für eine bestehende AgentCore Runtime abrufen.
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)
Validierung und Einschränkungen
Die Lebenszykluskonfiguration umfasst Validierungsregeln und Einschränkungen, um ungültige Konfigurationen zu verhindern.
Häufige Validierungsfehler
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
Hilfsfunktion zur Validierung
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")
Lebenszykluseinstellungen und Runtime-Sitzungen
Die von Ihnen definierten Lebenszyklus-Konfigurationseinstellungen werden auf jede einzelne Runtime-Sitzung angewendet. Wenn Sie einen Agenten mit einer bestimmten Sitzung aufrufenruntimeSessionId, stellt AgentCore Runtime eine dedizierte MicroVM für diese Sitzung bereit. Die Lebenszyklus-Timeouts (idleRuntimeSessionTimeoutundmaxLifetime) regeln den Lebenszyklus dieser spezifischen MicroVM-Instanz.
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() )
Wichtige Punkte zu Lebenszykluseinstellungen und Sitzungen:
-
Per-session Isolierung: Jede Maschine
runtimeSessionIderhält ihre eigene MicroVM mit unabhängigen Lebenszyklus-Timern -
Timer-Reset im Leerlauf: Der Timer wird jedes Mal
idleRuntimeSessionTimeoutzurückgesetzt, wenn Sie dieselbe Sitzung aufrufen -
Durchsetzung der maximalen Lebensdauer: Der
maxLifetimeTimer startet, wenn die MicroVM zum ersten Mal erstellt wird, und kann nicht zurückgesetzt werden -
Sitzungsbeendigung: Wenn einer der Timeouts erreicht ist, wird nur die MicroVM der jeweiligen Sitzung beendet. Die Sitzung kann mit einer neuen bereitgestellten MicroVM wieder aufgenommen werden.
Tipp
Jede MicroVM-Sitzung verwendet die Code-Assets (agentRuntimeArtifact), die zum Zeitpunkt der Erstellung der MicroVM bereitgestellt wurden. Wenn Sie Ihre Agentenlaufzeit mit neuem Code aktualisieren, verwenden bestehende Sitzungen weiterhin die vorherige Version, bis sie beendet und neue Sitzungen erstellt werden.
Bewährte Methoden
Folgen Sie diesen bewährten Methoden, wenn Sie Lebenszykluseinstellungen für eine optimale Ressourcennutzung und ein optimales Benutzererlebnis konfigurieren.
Empfehlungen
-
Beginnen Sie mit den Standardeinstellungen (900 Sekunden im Leerlauf, maximal 28800 Sekunden) und passen Sie sie je nach Nutzungsmuster an
-
Überwachen Sie die Sitzungsdauer, um die Timeout-Werte zu optimieren
-
Verwenden Sie kürzere Timeouts für Entwicklungsumgebungen, um Kosten zu sparen
-
Denken Sie an die Benutzererfahrung — zu kurze Timeouts können aktive Benutzer unterbrechen
-
Testen Sie zunächst Konfigurationsänderungen in Umgebungen außerhalb der Produktionsumgebung
-
Dokumentieren Sie die Gründe für das Timeout für Ihren speziellen Anwendungsfall
Allgemeine Muster
| Anwendungsfall | Timeout bei Leerlauf | Max. Lebensdauer | Begründung |
|---|---|---|---|
|
Interaktiver Chat |
10-15 Minuten |
2-4 Stunden |
Bringen Sie Reaktionsfähigkeit und Ressourcennutzung in Einklang |
|
Stapelverarbeitung |
30 Minuten |
8 Stunden |
Ermöglichen Sie lang andauernde Operationen |
|
Entwicklung |
5 Minuten |
30 Minuten |
Schnelle Reinigung zur Kostenoptimierung |
|
Produktions-API |
15 Minuten |
4 Stunden |
Standardmäßiger Produktionsaufwand |
|
Demo/Testing |
2 Minuten |
15 Minuten |
Aggressive Säuberung für den vorübergehenden Gebrauch |