View a markdown version of this page

AgentCore Lebenszykluseinstellungen von Amazon Bedrock konfigurieren - Amazon Grundgestein AgentCore

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

Konfigurationsattribute

Attribut Typ Reichweite (Sekunden) Erforderlich Description

idleRuntimeSessionTimeout

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)

maxLifetime

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 sein maxLifetime

  • 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 runtimeSessionId erhält ihre eigene MicroVM mit unabhängigen Lebenszyklus-Timern

  • Timer-Reset im Leerlauf: Der Timer wird jedes Mal idleRuntimeSessionTimeout zurückgesetzt, wenn Sie dieselbe Sitzung aufrufen

  • Durchsetzung der maximalen Lebensdauer: Der maxLifetime Timer 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