View a markdown version of this page

Defina as configurações do ciclo de AgentCore vida do Amazon Bedrock - Amazon Bedrock AgentCore

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.

Atributos de configuração

Atributo Tipo Alcance (segundos) Obrigatório Description

idleRuntimeSessionTimeout

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)

maxLifetime

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

  • 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 runtimeSessionId tem sua própria microVM com temporizadores de ciclo de vida independentes

  • Reinicialização do temporizador de inatividade: a idleRuntimeSessionTimeout reinicialização sempre que você invoca a mesma sessão

  • Aplicação máxima da vida útil: o maxLifetime cronô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