Defina as configurações do ciclo de AgentCore vida do Amazon Bedrock
O parâmetro LifecycleConfiguration de entrada CreateAgentRuntimepermite gerenciar o ciclo de vida de sessões e recursos de tempo de execução no Amazon Bedrock AgentCore Runtime. Essa configuração ajuda a otimizar a utilização de recursos limpando automaticamente as sessões ociosas e impedindo que instâncias de longa execução consumam recursos indefinidamente.
Você também pode definir as configurações do ciclo de vida de um AgentCore Runtime existente com a UpdateAgentRuntimeoperação.
Tópicos
Atributos de configuração
| Atributo | Tipo | Alcance (segundos) | Obrigatório | Description |
|---|---|---|---|---|
|
|
Inteiro |
60-28800 |
Não |
Tempo limite em segundos para sessões de tempo de execução ociosas. Quando uma sessão permanece inativa por esse período, ela acionará o encerramento. A rescisão pode durar até 15 segundos devido ao registro e à conclusão de outros processos. Padrão: 900 segundos (15 minutos) |
|
|
Inteiro |
60-28800 |
Não |
Vida útil máxima da instância em segundos. Uma vez atingidas, as instâncias inicializarão o encerramento. A rescisão pode durar até 15 segundos devido ao registro e à conclusão de outros processos. Padrão: 28800 segundos (8 horas). A sessão em si pode persistir além disso com uma nova instância provisionada. |
Restrições
-
idleRuntimeSessionTimeoutdeve ser menor ou igual amaxLifetime -
Ambos os valores são medidos em segundos
-
Intervalo válido: 60 a 28800 segundos (até 8 horas)
Comportamento padrão do
Quando não LifecycleConfiguration é fornecido ou contém valores nulos, a plataforma aplica a seguinte lógica:
| Entrada do cliente | ocioso RuntimeSessionTimeout | Vida útil máxima | Resultado |
|---|---|---|---|
|
Sem configuração |
900 seg |
2800s |
Usa os padrões: 900s e 28800s |
|
Somente MaxLifetime é fornecido |
900 seg |
Valor para o cliente |
Se maxLifetime ≤ 900s: usa maxLifetime para ambos Se maxLifetime > 900s: usa 900s para ocioso, valor do cliente para máximo |
|
Somente IdleTimeout fornecido |
Valor para o cliente |
2800s |
Usa o valor do cliente em estado ocioso, 28800 segundos no máximo |
|
Ambos os valores fornecidos |
Valor para o cliente |
Valor para o cliente |
Usa os valores do cliente como estão |
Valores padrão
-
idleRuntimeSessionTimeout: 900 segundos (15 minutos) -
maxLifetime: 28800 segundos (8 horas)
Crie um AgentCore Runtime com configuração de ciclo de vida
Você pode especificar uma configuração de ciclo de vida ao criar um 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}")
Atualizar a configuração do ciclo de vida de um Runtime AgentCore
Você pode atualizar a configuração do ciclo de vida de um Runtime existente AgentCore .
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}")
Obtenha a configuração do ciclo de vida de um Runtime AgentCore
Você pode obter a configuração do ciclo de vida de um Runtime existente AgentCore .
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)
Validação e restrições
A configuração do ciclo de vida inclui regras de validação e restrições para evitar configurações inválidas.
Erros comuns de validação
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
Função auxiliar de validação
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")
Configurações do ciclo de vida e sessões de tempo de execução
As configurações do ciclo de vida que você define são aplicadas a cada sessão individual de tempo de execução. Quando você invoca um agente com um específicoruntimeSessionId, o AgentCore Runtime provisiona uma microVM dedicada para essa sessão. Os tempos limite do ciclo de vida (idleRuntimeSessionTimeoutemaxLifetime) governam o ciclo de vida dessa instância específica de microVM.
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() )
Pontos-chave sobre configurações e sessões do ciclo de vida:
-
Per-session isolamento: cada um
runtimeSessionIdtem sua própria microVM com temporizadores de ciclo de vida independentes -
Reinicialização do temporizador de inatividade: a
idleRuntimeSessionTimeoutreinicialização sempre que você invoca a mesma sessão -
Aplicação máxima da vida útil: o
maxLifetimecronômetro começa quando o microVM é criado pela primeira vez e não pode ser redefinido -
Encerramento da sessão: Quando um tempo limite é atingido, somente a microVM dessa sessão específica é encerrada. A sessão pode ser retomada com uma nova microVM provisionada.
dica
Cada sessão de microVM usa os ativos de código (agentRuntimeArtifact) que foram implantados no momento da criação da microVM. Se você atualizar o tempo de execução do agente com um novo código, as sessões existentes continuarão usando a versão anterior até que sejam encerradas e novas sessões sejam criadas.
Práticas recomendadas
Siga essas práticas recomendadas ao definir as configurações do ciclo de vida para otimizar a utilização dos recursos e a experiência do usuário.
Recomendações
-
Comece com os padrões (900s ociosos, 28800s no máximo) e ajuste com base nos padrões de uso
-
Monitore a duração da sessão para otimizar os valores de tempo limite
-
Use tempos limite mais curtos para ambientes de desenvolvimento para economizar custos
-
Considere a experiência do usuário: tempos limite muito curtos podem interromper os usuários ativos
-
Teste primeiro as alterações de configuração em ambientes que não sejam de produção
-
Documentar a justificativa do tempo limite para seu caso de uso específico
Padrões comuns
| Caso de uso | Intervalo ocioso | Vida útil máxima | Lógica |
|---|---|---|---|
|
Chat interativo |
10-15 minutos |
2-4 horas |
Equilibre a capacidade de resposta com o uso de recursos |
|
Processamento em lote |
30 minutos |
8 horas |
Permitir operações de longa duração |
|
Desenvolvimento |
5 minutos |
30 minutos |
Limpeza rápida para otimização de custos |
|
API de produção |
15 minutos |
4 horas |
Carga de trabalho de produção padrão |
|
Demo/Testing |
2 minutos |
15 minutos |
Limpeza agressiva para uso temporário |