Blog

  • CloudWatch expande autoativação para logs do CloudFront e 3 tipos adicionais de recursos

    Autoativação expandida no CloudWatch

    A AWS anunciou uma expansão significativa da funcionalidade de autoativação do CloudWatch. O serviço agora oferece suporte automático para ativação de logs de acesso padrão do Amazon CloudFront, relatórios de descoberta de postura de segurança (CSPM) do AWS Security Hub, além de logs e rastreamentos de memória e gateway do Amazon Bedrock AgentCore que são enviados automaticamente para o CloudWatch Logs.

    Essa evolução marca um passo importante na simplificação do gerenciamento de telemetria em ambientes de nuvem. Clientes podem agora estabelecer regras de autoativação que configuram automaticamente a coleta de telemetria tanto para recursos já existentes quanto para novos recursos criados no futuro, garantindo uma cobertura de monitoramento consistente sem necessidade de configurações manuais repetitivas.

    Flexibilidade no escopo das regras

    As regras de autoativação oferem um alto grau de flexibilidade em termos de escopo. É possível configurá-las em três níveis diferentes:

    • No nível da organização como um todo
    • Para contas específicas dentro da organização
    • Para recursos específicos identificados por tags

    Essa estrutura permite que equipes padronizem a coleta de telemetria de forma consistente, adaptando-se às necessidades específicas de cada ambiente. Um exemplo prático dessa flexibilidade: uma equipe central de segurança pode criar uma única regra que automaticamente envia logs de acesso do CloudFront e descobertas do Security Hub para todos os recursos em toda a organização para o CloudWatch Logs.

    Disponibilidade e cobertura

    A capacidade de autoativação do CloudWatch está disponível em todas as regiões comerciais da AWS. É importante observar que a ingestão de logs será cobrada conforme os preços estabelecidos no modelo de preços do CloudWatch.

    Quanto ao escopo das regras por tipo de recurso: logs de acesso do Amazon CloudFront e descobertas do Security Hub CSPM suportam regras de autoativação em nível de organização, enquanto os dados de memória e gateway do Bedrock AgentCore funcionam com regras no nível de conta.

    Próximos passos

    Para aprofundar o conhecimento sobre como configurar e usar as regras de autoativação no CloudWatch, a documentação do Amazon CloudWatch oferece detalhes completos sobre a implementação dessa funcionalidade.

    Fonte

    Amazon CloudWatch expands auto-enablement to Amazon CloudFront logs and 3 additional resource types (https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-cloudwatch-cloudfront-enablement/)

  • Controle quais domínios seus agentes de IA podem acessar

    O desafio de dar acesso à internet para agentes de IA

    Agentes de inteligência artificial que conseguem navegar pela web abrem possibilidades impressionantes — desde automação de pesquisas até coleta de dados em tempo real. Porém, fornecer acesso irrestrito à internet para um agente de IA levanta preocupações legítimas sobre segurança e conformidade regulatória. E se o agente acessar websites não autorizados? E se dados sensíveis forem exfiltrados para domínios externos?

    O Amazon Bedrock AgentCore fornece ferramentas gerenciadas que permitem agentes de IA interagir com a web através do navegador, executar código e ser hospedados em ambiente gerenciado. Quando implantado em uma Nuvem Privada Virtual da AWS (Amazon VPC), você consegue controlar o acesso à rede das ferramentas utilizando o AWS Network Firewall para implementar filtragem baseada em domínios.

    Por que isso importa para empresas

    Requisitos de segurança em setores regulados

    Organizações em indústrias reguladas que implantam agentes de IA têm demandas consistentes e rigorosas em relação ao controle de tráfego de rede — tanto entrada quanto saída. Clientes em setores altamente regulados (como serviços financeiros) exigem explicações detalhadas sobre como o tráfego dos agentes é controlado e auditado. Esses clientes querem garantias de que os endpoints de tempo de execução permaneçam privados e que controles adicionais, como proteção de firewall de aplicações web, estejam disponíveis.

    Requisitos de provedores SaaS multi-tenant

    Empresas de Software como Serviço (SaaS) com múltiplos clientes precisam de controles granulares em nível de DNS, pois suas arquiteturas multi-tenant exigem políticas de rede específicas por cliente. Por exemplo, o Cliente A pode precisar permitir domínios que o Cliente B bloqueia. Requisitos comuns incluem: bloqueio específico de execução (impedir acesso a certos domínios durante launches específicas do navegador), restrições regionais e regras baseadas em categorias (desabilitar sites de jogos ou redes sociais através de conjuntos de regras pré-configurados).

    Mitigação de vulnerabilidades e conformidade

    Equipes de segurança identificaram que agentes de IA podem ser enganados para navegar para sites intencionais através de ataques de injeção de prompts. Listas de permissão de URLs customizadas reduzem a superfície de ataque ao restringir o navegador apenas aos domínios aprovados, independentemente do que o agente for instruído a fazer. Filtragem de egresso baseada em domínios fornece o logging e visibilidade de controle de acesso que equipes de segurança frequentemente precisam para seus processos de monitoramento.

    Arquitetura da solução

    A solução implanta o AgentCore Browser em uma subnet privada sem acesso direto à internet. O tráfego de saída é roteado através do AWS Network Firewall, que inspeciona os headers de Indicação de Nome de Servidor TLS (SNI) para determinar o domínio de destino e aplicar regras de filtragem. Você também consegue monitorar as ações do Network Firewall através da integração nativa com métricas do Amazon CloudWatch.

    Implantação do AgentCore com AWS Network Firewall e filtragem de egresso baseada em domínios — Fonte: Aws

    Componentes da arquitetura

    A arquitetura inclui:

    • Subnet privada: hospeda instâncias do AgentCore Browser sem endereços IP públicos
    • Subnet pública: contém o NAT Gateway para conectividade de saída
    • Subnet de firewall: hospeda o endpoint do Network Firewall
    • Tabelas de rota: quatro tabelas que controlam o fluxo de tráfego através do firewall para requisições de saída e tráfego de retorno

    Fluxo de tráfego

    O fluxo funciona em etapas sequenciais:

    • O AgentCore Runtime executa o agente e invoca a ferramenta AgentCore Browser
    • AgentCore Browser inicia uma requisição HTTPS da subnet privada
    • A tabela de rotas da subnet privada direciona tráfego ao NAT Gateway na subnet pública
    • O NAT Gateway traduz o endereço IP privado e encaminha a requisição ao endpoint do Network Firewall
    • Network Firewall inspeciona o header SNI do TLS para identificar o domínio de destino
    • Se o domínio corresponder a uma regra de lista de permissão, o firewall encaminha tráfego ao Internet Gateway
    • O Internet Gateway roteia tráfego aprovado para o destino externo
    • Tráfego de retorno segue o caminho simétrico de volta através do firewall para o agente

    Esta arquitetura garante que tráfego de navegador seja inspecionado e filtrado, independentemente do destino.

    Implementação prática

    Pré-requisitos

    Antes de começar, certifique-se de ter:

    • Uma conta AWS com permissões para criar recursos de VPC, Network Firewall e funções IAM
    • AWS Command Line Interface (AWS CLI) versão 2.x configurada com credenciais apropriadas
    • Acesso ao Amazon Bedrock AgentCore
    • Familiaridade básica com conceitos de redes VPC

    Passo 1: Deploy de recursos

    Para a configuração completa e passo a passo do VPC e Network Firewall, consulte a documentação de configuração VPC do Amazon Bedrock AgentCore. Esta seção destaca configurações específicas para o AgentCore Browser.

    Inicie o deploy do template CloudFormation:

    Você pode manter os valores padrão do stack. No entanto, certifique-se de adicionar um nome de stack (por exemplo, "agentcore-egress") ao campo "Stack name", escolha uma Zona de Disponibilidade no menu "Availability Zone" e inclua um nome de bucket existente válido no parâmetro "BucketConfigForOutput". Aguarde a conclusão da criação do stack, que normalmente leva 10 minutos. Continue com os próximos passos após o status do stack mudar para CREATE_COMPLETE.

    Passo 2: Revisar a função de execução IAM

    AgentCore Browser requer uma função IAM com política de confiança para o serviço bedrock-agentcore.amazonaws.com:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "bedrock-agentcore.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

    Passo 3: Configurar lista de permissão do Network Firewall

    Crie um grupo de regras stateful com seus domínios aprovados. Note o ponto à frente (.) para corresponder a subdomínios:

    cat > allowlist-rules.json << 'EOF'
    {
      "RulesSource": {
        "RulesSourceList": {
          "Targets": [
            ".wikipedia.org",
            ".stackoverflow.com",
            ".docs.aws.amazon.com",
            ".amazonaws.com",
            ".pypi.org",
            ".pythonhosted.org"
          ],
          "TargetTypes": ["HTTP_HOST", "TLS_SNI"],
          "GeneratedRulesType": "ALLOWLIST"
        }
      },
      "StatefulRuleOptions": {
        "RuleOrder": "STRICT_ORDER"
      }
    }
    EOF
    aws network-firewall create-rule-group \
      --rule-group-name browser-allowed-domains \
      --type STATEFUL \
      --capacity 100 \
      --rule-group file://allowlist-rules.json \
      --region us-east-2

    Importante: inclua .amazonaws.com na sua lista de permissão se o navegador precisar acessar serviços AWS ou use VPC Endpoints como alternativa.

    Passo 4: Configurar política de firewall

    A política de firewall deve usar aws:drop_established como ação padrão. Isso permite que handshakes TCP sejam concluídos (necessário para inspeção SNI do TLS) enquanto bloqueia conexões para domínios não permitidos:

    cat > firewall-policy.json << 'EOF'
    {
      "StatelessDefaultActions": ["aws:forward_to_sfe"],
      "StatelessFragmentDefaultActions": ["aws:forward_to_sfe"],
      "StatefulRuleGroupReferences": [
        {
          "ResourceArn": "arn:aws:network-firewall:us-east-2:ACCOUNT_ID:stateful-rulegroup/browser-allowed-domains",
          "Priority": 1
        }
      ],
      "StatefulEngineOptions": {
        "RuleOrder": "STRICT_ORDER"
      },
      "StatefulDefaultActions": ["aws:drop_established"]
    }
    EOF

    Passo 5: Criar grupo de segurança

    Crie um grupo de segurança que permita tráfego de saída. O Network Firewall cuida da filtragem de domínios:

    # Create security group
    aws ec2 create-security-group \
      --group-name agentcore-egress-sg \
      --description "AgentCore tools - egress only, filtered by Network Firewall" \
      --vpc-id vpc-XXXXXXXXX \
      --region us-east-2
    
    # Allow all outbound traffic (Network Firewall handles filtering)
    aws ec2 authorize-security-group-egress \
      --group-id sg-XXXXXXXXX \
      --protocol -1 \
      --port -1 \
      --cidr 0.0.0.0/0 \
      --region us-east-2
    
    # Remove default inbound rules if present (AgentCore tools don't need inbound)
    aws ec2 revoke-security-group-ingress \
      --group-id sg-XXXXXXXXX \
      --protocol -1 \
      --port -1 \
      --cidr 0.0.0.0/0 \
      --region us-east-2

    Passo 6: Criar AgentCore Browser

    Crie o navegador com configuração VPC apontando para sua subnet privada:

    aws bedrock-agentcore-control create-browser \
      --name my_secure_browser \
      --execution-role-arn arn:aws:iam::ACCOUNT_ID:role/AgentCoreBrowserExecutionRole \
      --network-configuration '{
        "networkMode": "VPC",
        "vpcConfig": {
          "securityGroups": ["sg-XXXXXXXXX"],
          "subnets": ["subnet-XXXXXXXXX"]
        }
      }' \
      --region us-east-2

    Passo 7: Testar a configuração

    Inicie uma sessão de navegador e verifique que as regras de firewall funcionam corretamente:

    # Start browser session
    aws bedrock-agentcore start-browser-session \
      --browser-identifier my_secure_browser-ABC123xyz \
      --region us-east-2

    Use a URL WebSocket retornada com uma ferramenta de automação de navegador como Playwright para testar domínios permitidos e bloqueados.

    Monitoramento via CloudWatch

    Verifique os logs de firewall no CloudWatch para tentativas de conexão bloqueadas:

    # View recent alert logs (blocked connections)
    aws logs filter-log-events \
      --log-group-name "/aws/network-firewall/agentcore-egress/alerts" \
      --filter-pattern '{ $.event.alert.action = "blocked" }' \
      --region us-east-2 \
      --start-time $(($(date +%s) - 300))000

    Boas práticas e considerações

    Práticas recomendadas

    • Use avaliação STRICT_ORDER: facilita processamento previsível de regras ao combinar listas de permissão e bloqueio
    • Inclua .amazonaws.com para acesso a serviços AWS: ou use VPC Endpoints para evitar rotear chamadas de API através da internet
    • Configure a tabela de rotas de entrada do IGW: crítico para roteamento simétrico. Sem isso, tráfego de retorno bypassa o firewall
    • Habilite logs ALERT e FLOW: logs ALERT capturam conexões bloqueadas; logs FLOW fornecem metadados de conexão
    • Aguarde sincronização do firewall: mudanças de regras levam alguns minutos para se propagar
    • Configure HOME_NET para arquiteturas multi-VPC: por padrão, inspeção de domínio do Network Firewall filtra apenas tráfego originário da faixa CIDR da VPC de deployment

    Limitações e considerações de custo

    Inspeção de conteúdo requer inspeção TLS: por padrão, filtragem de domínio opera em metadados TLS não criptografados (headers SNI) e não consegue inspecionar corpos de requisição ou resposta criptografados.

    Risco de bypass de header SNI/Host: o Network Firewall usa headers SNI do TLS e headers Host HTTP — não endereços IP — para determinar domínios de destino. Se esses headers forem manipulados, tráfego pode contornar filtragem de domínio. Para deployments de alta segurança, combine regras de domínio com regras baseadas em IP para destinos bloqueados críticos, ou adicione filtragem DNS como camada adicional.

    Escopo de HOME_NET em deployments multi-VPC: por padrão, inspeção de domínio do Network Firewall aplica-se apenas ao tráfego originário da faixa CIDR da VPC de deployment. Se você usar firewall centralizado com AWS Transit Gateway (múltiplas VPCs roteando através de um firewall compartilhado), você deve configurar a variável HOME_NET em seu grupo de regras para incluir faixas CIDR de origem.

    Custos variam conforme seu uso. Consulte os preços de NAT Gateway e Network Firewall para taxas atuais.

    Limpeza de recursos

    Delete recursos nesta ordem para evitar cobranças contínuas:

    • Delete o AgentCore Browser
    • Delete o Network Firewall (desabilite configurações de proteção primeiro)
    • Delete o NAT Gateway
    • Libere o endereço IP elástico
    • Delete as subnets e tabelas de rota
    • Desanexe e delete o Internet Gateway
    • Delete a VPC

    Nota: AgentCore Browser e Code Interpreter criam interfaces de rede elásticas em sua VPC. Após deletar esses recursos, aguarde alguns minutos para a interface de rede ser liberada antes de deletar o grupo de segurança, subnet ou VPC.

    Próximos passos

    Filtragem de domínio através de inspeção SNI é uma camada de segurança de egresso. Dependendo de seus requisitos, considere essas mitigações adicionais:

    • Route 53 DNS Firewall: ajuda a bloquear ou permitir consultas DNS por domínio e previne tunneling e exfiltração de DNS. Útil quando você precisa de filtragem em nível DNS ou proteção contra exfiltração de dados baseada em DNS.
    • Inspeção TLS + Suricata DLP: descriptografa HTTPS, inspeciona corpos de requisição/resposta com regras Suricata, ajuda a bloquear padrões de dados sensíveis (PII, credenciais). Necessário quando você precisa de prevenção de perda de dados (DLP) para tráfego gerado por agentes.
    • Arquitetura de inspeção centralizada: roteia tráfego de múltiplas VPCs através de uma VPC de inspeção compartilhada com Network Firewall. Útil quando você tem múltiplos deployments do AgentCore e quer enforcement de política centralizado.

    Quando usar inspeção TLS, configure certificados customizados em seus recursos do AgentCore para confiar na CA de re-assinatura do Network Firewall.

    Conclusão

    Ao combinar ferramentas do Amazon Bedrock AgentCore com AWS Network Firewall, você consegue dar aos agentes de IA acesso controlado à web mantendo segurança e alinhamento de conformidade. A abordagem de filtragem baseada em domínios permite definir precisamente quais websites agentes podem acessar, bloquear destinos indesejados e fazer logging de tentativas de conexão para fins de auditoria.

    Esta arquitetura resolve as preocupações de segurança levantadas por clientes corporativos: conformidade em setores regulados fornece isolamento de rede e logging de auditoria necessários para revisões de segurança em nível CISO, controle multi-tenant habilita políticas de domínio por cliente ou por execução para provedores SaaS, defesa contra injeção de prompts restringe navegação de agentes a domínios aprovados reduzindo superfície de ataque, e evidência de auditoria gera logs no CloudWatch que suportam requisitos de conformidade.

    Para empresas implantando agentes de IA que precisam de acesso à internet para pesquisa, coleta de dados ou integrações de API, este padrão fornece uma abordagem production-ready para manter controle rigoroso sobre onde esse acesso leva. Em vez de manter proxies squid customizados ou infraestrutura de rede complexa, você consegue usar serviços gerenciados da AWS para implementar filtragem de egresso em nível corporativo em horas, não semanas.

    Para mais informações sobre AgentCore Browser, consulte a documentação do AgentCore Browser.

    Recursos relacionados

    Fonte

    Control which domains your AI agents can access (https://aws.amazon.com/blogs/machine-learning/control-which-domains-your-ai-agents-can-access/)

  • Persistência de Estado de Sessão com Configuração de Filesystem e Execução de Comandos Shell

    A Evolução dos Agentes de IA e o Desafio da Efêmera

    Os agentes de inteligência artificial ultrapassaram a simples conversa e evoluíram significativamente. Hoje, eles conseguem escrever código, gerenciar estado persistente em filesystem, executar comandos de sistema operacional e administrar estados ao longo de toda a estrutura de diretórios. À medida que assistentes de codificação baseados em agentes e fluxos de desenvolvimento se tornaram mais maduros, o filesystem emergiu como a memória de trabalho principal desses agentes, estendendo suas capacidades muito além da janela de contexto disponível em modelos de linguagem grandes.

    Porém, essa mudança de paradigma introduz dois desafios que toda equipe desenvolvendo agentes em ambiente de produção enfrenta inevitavelmente.

    O Primeiro Desafio: Filesystems Efêmeros

    O filesystem é temporário por natureza. Quando a sessão do agente termina, tudo que foi criado desaparece: dependências instaladas, código gerado, histórico local do git. Nada persiste.

    O Segundo Desafio: Operações Determinísticas sem Intermediários

    Quando seu fluxo de trabalho precisa executar operações determinísticas como npm test ou git push, você fica forçado a rotear essas operações através do modelo de linguagem grande (LLM) ou construir ferramentas customizadas fora do runtime. Nenhuma dessas opções é ideal.

    Duas Soluções Integradas do Amazon Bedrock AgentCore Runtime

    A AWS respondeu a esses desafios com duas capacidades inovadoras no Amazon Bedrock AgentCore Runtime: armazenamento de sessão gerenciado para persistir estado de filesystem do agente (em preview público) e execução de comando (InvokeAgentRuntimeCommand) para rodar comandos shell diretamente dentro da máquina virtual de rede (microVM) associada a cada sessão ativa do agente.

    Cada uma delas é útil isoladamente. Juntas, elas desbloqueiam workflows que não eram possíveis anteriormente.

    Compreendendo a Arquitetura do AgentCore Runtime

    Isolamento e Segurança da Sessão

    O AgentCore Runtime executa cada sessão em uma máquina virtual de rede dedicada com recursos isolados, incluindo seu próprio kernel, memória e filesystem. Essa arquitetura proporciona limites de segurança robustos, mas também implica que cada sessão começa com um filesystem limpo. Quando a microVM é finalizada — seja através de uma parada explícita ou timeout de inatividade — tudo que o agente criou desaparece.

    Na prática, isso significa que seu agente de codificação pode gastar vinte minutos estruturando um projeto inteiro: configurando diretórios, instalando dependências, gerando código boilerplate, configurando ferramentas de build. Você tira um intervalo para almoçar e, quando retorna invocando a mesma sessão, o agente começa do zero. Cada pacote reinstalado, cada arquivo regeneado. Vinte minutos de computação desperdiçados antes que o agente possa fazer trabalho útil novamente.

    As Soluções Anteriores e Suas Limitações

    Essa limitação poderia ser contornada escrevendo lógica de checkpoint para fazer upload de arquivos para Amazon Simple Storage Service (S3) antes de parar a sessão e baixá-los ao retomar, ou mantendo sessões vivas para evitar perda de estado. Essas soluções funcionam, mas não resolvem as limitações no nível de filesystem e adicionam complexidade ao código do agente.

    A mesma fricção existe para operações determinísticas. Quando o agente termina uma correção e você precisa rodar testes, rotear o comando através do LLM como uma chamada de ferramenta adiciona custo de tokens, latência e não-determinismo a uma operação previsível. A alternativa é construir lógica de orquestração separada fora do runtime, o que exige conectar-se ao filesystem do agente, adicionando ainda mais complexidade.

    Armazenamento de Sessão Gerenciado: Estado que Persiste

    O Conceito de Armazenamento Persistente

    A AWS introduziu armazenamento de sessão gerenciado para resolver o desafio dos filesystems efêmeros. Ele oferece ao agente um diretório persistente que sobrevive aos ciclos de parada e retomada. A persistência é integrada no runtime e configurada na criação do agente — tudo que é escrito naquele diretório persiste mesmo quando o ambiente de computação é substituído.

    Configurando Armazenamento Persistente

    Para configurar armazenamento persistente, você adiciona sessionStorage à configuração de filesystem do runtime do agente. Usando a interface de linha de comando:

    aws bedrock-agentcore create-agent-runtime \
      --agent-runtime-name "coding-agent" \
      --role-arn "arn:aws:iam::111122223333:role/AgentExecutionRole" \
      --agent-runtime-artifact '{"containerConfiguration": { "containerUri": "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest" }}' \
      --filesystem-configurations '[{ "sessionStorage": { "mountPath": "/mnt/workspace" } }]'

    Ou utilizando o AWS SDK para Python (Boto3):

    import boto3
    
    # Use the control plane client for creating and managing runtimes
    control_client = boto3.client('bedrock-agentcore-control', region_name='us-west-2')
    response = control_client.create_agent_runtime(
        agentRuntimeName='coding-agent',
        agentRuntimeArtifact={
            'containerConfiguration': {
                'containerUri': '123456789012.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest'
            }
        },
        roleArn='arn:aws:iam::111122223333:role/AgentExecutionRole',
        protocolConfiguration={
            'serverProtocol': 'HTTP'
        },
        networkConfiguration={
            'networkMode': 'PUBLIC'
        },
        filesystemConfigurations=[{
            'sessionStorage': {
                'mountPath': '/mnt/workspace'
            }
        }]
    )

    Detalhes Importantes sobre Clientes Boto3

    Uma observação técnica importante: o AgentCore utiliza dois clientes Boto3 distintos. O cliente do plano de controle (bedrock-agentcore-control) gerencia operações de ciclo de vida do runtime como CreateAgentRuntime, GetAgentRuntime e DeleteAgentRuntime. O cliente do plano de dados (bedrock-agentcore) lida com operações de sessão como InvokeAgentRuntime e InvokeAgentRuntimeCommand.

    O caminho de montagem deve começar com /mnt seguido por um nome de pasta (por exemplo, /mnt/workspace ou /mnt/data). Após configurado, qualquer arquivo que o agente escreva nesse caminho é automaticamente persistido em armazenamento gerenciado.

    A Experiência de Parada e Retomada

    Você invoca seu agente e solicita que configure um projeto:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "session-001" \
      --payload '{"prompt": "Set up the project and install dependencies in /mnt/workspace"}'

    O agente baixa o código, instala os pacotes e gera as configurações na microVM dedicada a essa sessão. Depois, você para a sessão ou o timeout de inatividade dispara, e a microVM finaliza. Horas depois, você retorna e invoca com o mesmo ID de sessão:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "session-001" \
      --payload '{"prompt": "Run the tests and fix any failures"}'

    Um novo ambiente de computação (microVM) é provisionado e monta o mesmo armazenamento. O agente vê /mnt/workspace exatamente como deixou: arquivos de código, node_modules, artefatos de build e histórico .git intactos. O agente retoma seu trabalho sem necessidade de reinstalar ou regenerar. Do ponto de vista do agente, nada extraordinário está acontecendo — ele apenas lê e escreve em um diretório como faria normalmente. Seu código de agente não precisa mudar: sem APIs especiais, sem lógica de salvar/restaurar, sem serialização. Escreva um arquivo em /mnt/workspace, pare a sessão, retome, e o arquivo continua lá.

    Controle da Retenção de Dados

    Por padrão, os dados de armazenamento de sessão são retidos por 14 dias de inatividade. Se a sessão não for retomada dentro dessa janela, os dados são limpos automaticamente. Quando o endpoint do agente é atualizado para uma versão diferente e o mesmo ID de sessão é invocado, os dados da sessão são atualizados, oferecendo um contexto limpo para a nova versão.

    Um Fluxo de Trabalho de Múltiplos Dias na Prática

    Dia 1: Análise e Preparação

    Você invoca seu agente de codificação e solicita que baixe uma base de código, inspecione os arquivos e configure o ambiente de desenvolvimento:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "fefc1779-e5e7-49cf-a2c4-abaf478680c4" \
      --payload '{"prompt": "Download the code from s3://amzn-s3-demo-bucket/fastapi-demo-main.zip and list all files"}'

    O agente baixa o repositório para /mnt/workspace, extrai o conteúdo e relata:

    Arquivos no projeto fastapi-demo-main:

    • Dockerfile
    • README.md
    • main.py
    • requirements.txt

    Você fecha seu laptop e vai para casa.

    Dia 2: Implementação e Iteração

    Você invoca com o mesmo ID de sessão:

    aws bedrock-agentcore invoke-agent-runtime \
      --agent-runtime-arn "arn:...:agent-runtime/coding-agent" \
      --runtime-session-id "fefc1779-e5e7-49cf-a2c4-abaf478680c4" \
      --payload '{"prompt": "Add a new function called hello_world to main.py"}'

    O agente enxerga o projeto exatamente como deixou. Ele modifica o main.py diretamente. Sem re-download, sem re-extração. Quando você pede ao agente para listar os arquivos, tudo continua lá, incluindo o main.py modificado com a nova função hello_world. A microVM de ontem já foi finalizada, mas o trabalho persiste.

    Execução de Comando Shell: Operações Determinísticas Diretas

    O Problema das Operações Determinísticas

    Agora que seu agente escreveu novo código, você precisa verificar que funciona. É onde a segunda capacidade entra em cena: InvokeAgentRuntimeCommand permite executar comandos shell diretamente dentro de uma sessão ativa do AgentCore Runtime e transmitir a saída de volta via HTTP/2.

    Quando Usar Cada Abordagem

    O conceito-chave é que agentes e comandos shell são bons em coisas diferentes. Use execução de comando para operações com comando conhecido (npm test, git push), operações que exigem execução determinística, fluxos que precisam de saída em tempo real de processos longos, validação de gate de fluxo de trabalho ou bootstrap de ambiente. Use o agente para operações que exigem raciocínio (“analise esse código e corrija o bug”), quando você quer que o LLM decida o que fazer, para trabalho criativo ou analítico.

    Quando seu agente termina de escrever código e você precisa rodar testes, não deveria precisar do LLM para isso. npm test é npm test. O comando é conhecido, o comportamento deve ser determinístico, e você quer a saída bruta, não a interpretação do LLM.

    Executando um Comando

    Execute um comando utilizando o AWS SDK para Python (Boto3):

    import boto3
    import sys
    
    client = boto3.client('bedrock-agentcore', region_name='us-west-2')
    response = client.invoke_agent_runtime_command(
        agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my-agent',
        runtimeSessionId='session-id-at-least-33-characters-long',
        body={
            'command': '/bin/bash -c "npm test"',
            'timeout': 60
        }
    )
    
    for event in response['stream']:
        if 'chunk' in event:
            chunk = event['chunk']
            if 'contentStart' in chunk:
                print("Command execution started")
            if 'contentDelta' in chunk:
                delta = chunk['contentDelta']
                if delta.get('stdout'):
                    print(delta['stdout'], end='')
                if delta.get('stderr'):
                    print(delta['stderr'], end='', file=sys.stderr)
            if 'contentStop' in chunk:
                stop = chunk['contentStop']
                print(f"\nExit code: {stop.get('exitCode')}, Status: {stop.get('status')}")

    Tipos de Eventos da Resposta

    A resposta transmite três tipos de evento em tempo real: contentStart (primeiro chunk, confirma que o comando começou), contentDelta (durante execução, contém saída stdout e/ou stderr) e contentStop (último chunk, contém exitCode e status — COMPLETED ou TIMED_OUT).

    Como a saída é transmitida conforme é produzida, você pode detectar uma falha nos primeiros segundos e reagir imediatamente, em vez de esperar pela execução completa.

    Detalhes Críticos: Mesmo Container, Mesmo Filesystem

    Um detalhe crítico: comandos executam no mesmo container, filesystem e ambiente que seu agente, não em um sidecar ou processo separado comunicando via socket. Um arquivo que o agente escreveu em /mnt/workspace/fix.py é imediatamente visível para um comando executando cat /mnt/workspace/fix.py. Não há etapa de sincronização, transferência de arquivo ou volume compartilhado a configurar.

    O AgentCore Runtime microVM não inclui ferramentas de desenvolvimento por padrão. Portanto, qualquer ferramenta que seus comandos dependem — git, npm ou runtimes de linguagem — deve ser adicionado na imagem de container ou instalado dinamicamente em tempo de execução.

    Características de Design que Moldam o Uso

    Os comandos seguem um design de execução única: cada comando dispara um novo processo bash, executa até conclusão (ou timeout) e retorna. Sem sessão shell persistente entre comandos. Isso alinha-se com como frameworks de agentes usam execução de comando: elaborar um comando, executá-lo, ler saída e decidir o próximo passo.

    A execução é não-bloqueante: execução de comando não bloqueia invocações de agente. Você pode invocar o agente e rodar comandos concorrentemente na mesma sessão.

    Cada comando é stateless: cada comando inicia limpo, sem histórico de shell e variáveis de ambiente de comandos anteriores não persistem. Se você precisa de estado, codifique na comando: cd /workspace && export NODE_ENV=test && npm test.

    Casos de Uso Práticos

    Equipes estão construindo com essas capacidades: automação de testes — após o agente escrever código, rodar npm test ou pytest como comando, transmitir saída e realimentar falhas específicas ao agente para iteração; fluxos git — branching, commit e push são determinísticos, rodar como comandos mantém lógica de controle de versão fora do LLM; bootstrap de ambiente — clonar repos, instalar pacotes, configurar ferramentas de build antes do agente começar, muito mais rápido e confiável como comandos diretos; pipelines de build — qualquer coisa com comando conhecido que deve rodar exatamente como especificado (cargo build --release, mvn package, go build); gates de validação — rodar linters, verificadores de tipo, scanners de segurança como gate após o agente escrever código mas antes de fazer commit; debug — inspecionar ambiente de runtime, verificar pacotes instalados, uso de disco, processos rodando. Tudo útil para entender falhas de agente.

    Melhor Juntas: O Filesystem como Contexto Compartilhado

    A Sinergia das Duas Capacidades

    Armazenamento de sessão gerenciado resolve o desafio de filesystems efêmeros. Execução de comando resolve o desafio de operações determinísticas. Cada uma é valiosa isoladamente, mas são mais poderosas juntas porque compartilham o mesmo filesystem que une todo o fluxo de trabalho.

    Quando seu runtime de agente tem armazenamento de sessão gerenciado configurado em /mnt/workspace, tudo opera no mesmo diretório persistente: InvokeAgentRuntime escreve código, gera artefatos e gerencia arquivos em /mnt/workspace. InvokeAgentRuntimeCommand executa testes, operações git e builds lendo e escrevendo no mesmo /mnt/workspace. Você para a sessão, computação (microVM) desliga, /mnt/workspace persiste. Retorna no dia seguinte, nova computação monta o mesmo armazenamento. Tanto agente quanto execute command veem os mesmos arquivos. O filesystem torna-se o contexto compartilhado que conecta raciocínio do agente, operações determinísticas e tempo.

    Exemplo Integrado de Uso

    Aqui está como parece em código:

    import boto3
    import json
    
    client = boto3.client('bedrock-agentcore', region_name='us-west-2')
    AGENT_ARN = 'arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/my-coding-agent'
    SESSION_ID = 'fefc1779-e5e7-49cf-a2c4-abaf478680c4'
    
    def run_command(command, timeout=60):
        """Execute a shell command and return the exit code."""
        response = client.invoke_agent_runtime_command(
            agentRuntimeArn=AGENT_ARN,
            runtimeSessionId=SESSION_ID,
            contentType='application/json',
            accept='application/vnd.amazon.eventstream',
            body={'command': command, 'timeout': timeout}
        )
        for event in response.get('stream', []):
            if 'chunk' in event and 'contentStop' in event['chunk']:
                return event['chunk']['contentStop'].get('exitCode')
        return None
    
    # Step 1: The agent analyzes the issue and writes a fix
    # (Reasoning task → use InvokeAgentRuntime)
    response = client.invoke_agent_runtime(
        agentRuntimeArn=AGENT_ARN,
        runtimeSessionId=SESSION_ID,
        payload=json.dumps({
            "prompt": "Read JIRA-1234 and implement the fix in /mnt/workspace"
        }).encode()
    )
    
    # Process agent response...
    
    # Step 2: Run the test suite
    # (Deterministic operation → use InvokeAgentRuntimeCommand)
    exit_code = run_command('/bin/bash -c "cd /mnt/workspace && npm test"', timeout=300)
    
    # Step 3: If tests pass, commit and push
    # (Deterministic operation → use InvokeAgentRuntimeCommand)
    if exit_code == 0:
        run_command('/bin/bash -c "cd /mnt/workspace && git checkout -b fix/JIRA-1234"')
        run_command('/bin/bash -c "cd /mnt/workspace && git add -A && git commit -m \'Fix JIRA-1234\'"')
        run_command('/bin/bash -c "cd /mnt/workspace && git push origin fix/JIRA-1234"')

    O agente escreve o código enquanto a plataforma executa os comandos. Cada um faz o que foi desenhado para fazer. Como /mnt/workspace é respaldado por armazenamento de sessão gerenciado, você pode parar essa sessão, retornar no dia seguinte, e todo o workspace continua lá pronto para o agente continuar iterando. Esse é o padrão: o agente raciocina, execute command atua, e o filesystem persistente lembra.

    Primeiros Passos

    Ambas as capacidades já estão disponíveis. Aqui está como começar a usá-las:

    Armazenamento de sessão gerenciado (preview público) — Adicione filesystemConfigurations com sessionStorage ao chamar CreateAgentRuntime. Especifique um caminho de montagem começando com /mnt. Tudo que seu agente escrever naquele caminho persiste entre ciclos de parada/retomada. Dados máximos permitidos são 1 GB por sessão.

    Execução de comando — Chame InvokeAgentRuntimeCommand com uma string de comando e timeout em qualquer sessão ativa. O comando executa no mesmo container que seu agente, com acesso ao mesmo filesystem.

    Para começar com tutoriais e código de exemplo:

    Conclusão

    Tudo começou com dois desafios: agentes que perdem seu trabalho quando sessões param e operações determinísticas que precisam ser roteadas através do LLM ou construídas fora do runtime. Armazenamento de sessão gerenciado e execução de comando resolvem ambos esses desafios. O filesystem compartilhado entre eles cria um loop de desenvolvimento onde o agente raciocina, comandos executam e o trabalho persiste entre sessões. As três capacidades formam um loop que não quebra quando você fecha seu laptop. Teste as novas capacidades do Amazon Bedrock AgentCore e compartilhe o que você constrói.

    Fonte

    Persist session state with filesystem configuration and execute shell commands (https://aws.amazon.com/blogs/machine-learning/persist-session-state-with-filesystem-configuration-and-execute-shell-commands/)

  • Simulando Usuários Realistas para Avaliar Agentes de IA em Múltiplas Rodadas com Strands Evals

    Por que avaliar agentes em múltiplas rodadas é fundamentalmente diferente

    A avaliação de interações single-turn (uma única rodada) segue um padrão bem estabelecido: você fornece uma entrada, coleta a saída e julga o resultado. Estruturas como o Strands Evaluation SDK sistematizam esse processo através de avaliadores que medem helpfulness (utilidade), faithfulness (fidelidade) e tool usage (uso de ferramentas). Publicações anteriores cobrem como construir suites de avaliação abrangentes para agentes de IA usando essas capacidades.

    No entanto, as conversas em produção raramente param em uma única rodada. Usuários reais se envolvem em trocas que se desenrolam ao longo de múltiplas rodadas. Eles fazem perguntas de acompanhamento quando as respostas são incompletas, mudam de direção quando novas informações surgem e expressam frustração quando suas necessidades não são atendidas. Um assistente de viagens que funciona bem com “Compre um voo para Paris” isoladamente pode sofrer quando o mesmo usuário pergunta depois: “Na verdade, podemos olhar trens?” ou “E quanto a hotéis perto da Torre Eiffel?”

    Imagem original — fonte: Aws

    O desafio da escala em avaliações multi-rodada

    Testar esses padrões dinâmicos exige mais do que casos de teste estáticos com entradas e saídas predefinidas. A dificuldade central é a escala: você não pode conduzir manualmente centenas de conversas multi-rodada toda vez que seu agente muda. Além disso, fluxos de conversa roteirizados o prendem a caminhos predeterminados que não refletem como usuários reais se comportam.

    O que equipes de avaliação precisam é de uma forma de gerar usuários realistas e orientados por objetivos programaticamente, permitindo que eles conversem naturalmente com um agente ao longo de múltiplas rodadas. A AWS aborda esse desafio com o ActorSimulator no Strands Evaluation SDK, que oferece simulação estruturada de usuários integrada ao seu pipeline de avaliação.

    O que torna um usuário simulado efetivo

    A avaliação baseada em simulação é bem estabelecida em outras disciplinas de engenharia. Simuladores de voo testam respostas de pilotos a cenários que seriam perigosos ou impossíveis de reproduzir no mundo real. Engines de jogos usam agentes orientados por IA para explorar milhões de caminhos de comportamento de jogador antes do lançamento. O mesmo princípio se aplica a IA conversacional.

    Um usuário simulado útil começa com uma persona consistente. Um que se comporta como especialista técnico em uma rodada e novato confuso na próxima produz dados de avaliação não confiáveis. Consistência significa manter o mesmo estilo de comunicação, nível de expertise e traços de personalidade em cada troca, assim como uma pessoa real faria.

    Igualmente importante é o comportamento orientado por objetivos. Usuários reais chegam a um agente com algo que querem realizar. Eles persistem até alcançar o objetivo, ajustam sua abordagem quando algo não está funcionando e reconhecem quando o objetivo foi atingido. Sem objetivos explícitos, um usuário simulado tende a encerrar conversas muito cedo ou continuar perguntando indefinidamente, nenhum dos quais reflete o uso real.

    O usuário simulado também deve responder adaptativamente ao que o agente diz, não seguir um script predeterminado. Quando o agente faz uma pergunta de esclarecimento, o ator deve respondê-la em caráter. Se a resposta for incompleta, o ator segue em relação ao que foi deixado de fora. Se a conversa se desviar do tópico, o ator a reconecta ao objetivo original. Esses comportamentos adaptativos tornam as conversas simuladas valiosas como dados de avaliação porque exercitam a mesma dinâmica de conversa que seu agente enfrenta em produção.

    Como o ActorSimulator funciona

    O ActorSimulator implementa essas qualidades de simulação através de um sistema que encapsula um Strands Agent configurado para se comportar como uma persona de usuário realista. O processo começa com geração de perfil. Dado um caso de teste contendo uma consulta de entrada e uma descrição de tarefa opcional, o ActorSimulator usa um Modelo de Linguagem Grande (LLM) para criar um perfil de ator completo.

    Um caso de teste com entrada “Preciso de ajuda para reservar um voo para Paris” e descrição de tarefa “Completar reserva de voo dentro do orçamento” pode produzir um viajante consciente do orçamento com experiência iniciante e um estilo de comunicação casual. A geração de perfil dá a cada conversa simulada um caráter distinto e consistente.

    Imagem original — fonte: Aws

    Gerenciamento de conversa e rastreamento de objetivos

    Com o perfil estabelecido, o simulador gerencia a conversa rodada por rodada. Ele mantém o histórico completo da conversa e gera cada resposta em contexto, mantendo o comportamento do usuário simulado alinhado com seu perfil e objetivos ao longo de todo o diálogo.

    Quando seu agente aborda apenas parte do pedido, o usuário simulado naturalmente faz perguntas de acompanhamento sobre as lacunas. Uma pergunta de esclarecimento do agente recebe uma resposta que permanece consistente com a persona. A conversa se sente orgânica porque cada resposta reflete tanto a persona do ator quanto tudo o que foi dito até então.

    O rastreamento de objetivo funciona junto com a conversa. O ActorSimulator inclui uma ferramenta integrada de avaliação de conclusão de objetivo que o usuário simulado pode invocar para avaliar se seu objetivo original foi atendido. Quando o objetivo é satisfeito ou o usuário simulado determina que o agente não pode completar seu pedido, o simulador emite um sinal de parada e a conversa termina. Se o máximo de rodadas for atingido antes do objetivo ser cumprido, a conversa também para. Isso oferece um indicador de que o agente pode não estar resolvendo as necessidades do usuário de forma eficiente.

    Cada resposta do usuário simulado também inclui raciocínio estruturado ao lado do texto da mensagem. Você pode inspecionar por que o usuário simulado escolheu dizer o que disse, se estava seguindo informações faltantes, expressando confusão ou redirecionando a conversa. Essa transparência é valiosa durante o desenvolvimento da avaliação porque você pode ver o raciocínio por trás de cada rodada, facilitando o rastreamento de onde as conversas têm sucesso ou falham.

    Iniciando com o ActorSimulator

    Para começar, você precisará instalar o Strands Evaluation SDK usando:

    pip install strands-agents-evals

    Para instruções passo a passo, você pode consultar a documentação ou nosso post anterior para mais detalhes. Colocar esses conceitos em prática requer código mínimo. Você define um caso de teste com uma consulta de entrada e uma descrição de tarefa que captura o objetivo do usuário. O ActorSimulator cuida da geração de perfil, gerenciamento de conversa e rastreamento de objetivo automaticamente.

    O exemplo a seguir avalia um agente assistente de viagens através de uma conversa simulada multi-rodada:

    from strands import Agent
    from strands_evals import ActorSimulator, Case, Experiment
    
    # Define your test case
    case = Case(
        input="I want to plan a trip to Tokyo with hotel and activities",
        metadata={"task_description": "Complete travel package arranged"}
    )
    
    # Create the agent you want to evaluate
    agent = Agent(
        system_prompt="You are a helpful travel assistant.",
        callback_handler=None
    )
    
    # Create user simulator from test case
    user_sim = ActorSimulator.from_case_for_user_simulator(
        case=case, max_turns=5
    )
    
    # Run the multi-turn conversation
    user_message = case.input
    conversation_history = []
    
    while user_sim.has_next():
        # Agent responds to user
        agent_response = agent(user_message)
        agent_message = str(agent_response)
        conversation_history.append({
            "role": "assistant",
            "content": agent_message
        })
        
        # Simulator generates next user message
        user_result = user_sim.act(agent_message)
        user_message = str(user_result.structured_output.message)
        conversation_history.append({
            "role": "user",
            "content": user_message
        })
    
    print(f"Conversation completed in {len(conversation_history) // 2} turns")

    O loop de conversa continua até que has_next() retorne False, o que acontece quando os objetivos do usuário simulado são atingidos, o usuário simulado determina que o agente não pode completar o pedido, ou o limite máximo de rodadas é atingido. O conversation_history resultante contém a transcrição completa multi-rodada, pronta para avaliação.

    Integração com pipelines de avaliação

    Um loop de conversa standalone é útil para experimentos rápidos, mas a avaliação em produção exige capturar traces e alimentá-los em seu pipeline de avaliador. O próximo exemplo combina o ActorSimulator com coleta de telemetria OpenTelemetry e mapeamento de sessão do Strands Evals. A função de tarefa executa uma conversa simulada e coleta spans de cada rodada, depois os mapeia em uma sessão estruturada para avaliação:

    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter
    from strands import Agent
    from strands_evals import ActorSimulator, Case, Experiment
    from strands_evals.evaluators import HelpfulnessEvaluator
    from strands_evals.telemetry import StrandsEvalsTelemetry
    from strands_evals.mappers import StrandsInMemorySessionMapper
    
    # Setup telemetry for capturing agent traces
    telemetry = StrandsEvalsTelemetry()
    memory_exporter = InMemorySpanExporter()
    span_processor = BatchSpanProcessor(memory_exporter)
    telemetry.tracer_provider.add_span_processor(span_processor)
    
    def evaluation_task(case: Case) -> dict:
        # Create simulator
        user_sim = ActorSimulator.from_case_for_user_simulator(
            case=case, max_turns=3
        )
        
        # Create agent
        agent = Agent(
            system_prompt="You are a helpful travel assistant.",
            callback_handler=None
        )
        
        # Accumulate spans across conversation
        all_target_spans = []
        user_message = case.input
        
        while user_sim.has_next():
            memory_exporter.clear()
            agent_response = agent(user_message)
            agent_message = str(agent_response)
            
            # Capture telemetry
            turn_spans = list(memory_exporter.get_finished_spans())
            all_target_spans.extend(turn_spans)
            
            # Generate next user message
            user_result = user_sim.act(agent_message)
            user_message = str(user_result.structured_output.message)
        
        # Map to session for evaluation
        mapper = StrandsInMemorySessionMapper()
        session = mapper.map_to_session(
            all_target_spans, session_id="test-session"
        )
        
        return {"output": agent_message, "trajectory": session}
    
    # Create evaluation dataset
    test_cases = [
        Case(
            name="booking-simple",
            input="I need to book a flight to Paris next week",
            metadata={
                "category": "booking",
                "task_description": "Flight booking confirmed"
            }
        )
    ]
    
    evaluator = HelpfulnessEvaluator()
    dataset = Experiment(cases=test_cases, evaluator=evaluator)
    
    # Run evaluations
    report = Experiment.run_evaluations(evaluation_task)
    report.run_display()
    Imagem original — fonte: Aws

    Essa abordagem captura traces completos do comportamento do seu agente ao longo de rodadas de conversa. Os spans incluem chamadas de ferramentas, invocações de modelo e informações de tempo para cada rodada na conversa simulada. Ao mapear esses spans em uma sessão estruturada, você disponibiliza a interação multi-rodada completa para avaliadores como GoalSuccessRateEvaluator e HelpfulnessEvaluator, que podem então avaliar a conversa como um todo, em vez de rodadas isoladas.

    Perfis de ator personalizados para testes direcionados

    A geração de perfil automático funciona bem para a maioria dos cenários de avaliação, mas alguns objetivos de teste exigem personas específicas. Você pode querer verificar se seu agente maneja um usuário especialista impaciente de forma diferente de um iniciante paciente, ou se ele responde apropriadamente a um usuário com necessidades específicas do domínio.

    Para esses casos, o ActorSimulator aceita um perfil de ator totalmente definido que você controla:

    from strands_evals.types.simulation import ActorProfile
    from strands_evals import ActorSimulator
    from strands_evals.simulation.prompt_templates.actor_system_prompt import (
        DEFAULT_USER_SIMULATOR_PROMPT_TEMPLATE
    )
    
    # Define a custom actor profile
    actor_profile = ActorProfile(
        traits={
            "personality": "analytical and detail-oriented",
            "communication_style": "direct and technical",
            "expertise_level": "expert",
            "patience_level": "low"
        },
        context="Experienced business traveler with elite status who values efficiency",
        actor_goal="Book business class flight with specific seat preferences and lounge access"
    )
    
    # Initialize simulator with custom profile
    user_sim = ActorSimulator(
        actor_profile=actor_profile,
        initial_query="I need to book a business class flight to London next Tuesday",
        system_prompt_template=DEFAULT_USER_SIMULATOR_PROMPT_TEMPLATE,
        max_turns=10
    )

    Ao definir traços como nível de paciência, estilo de comunicação e expertise, você pode testar sistematicamente como seu agente funciona em diferentes segmentos de usuários. Um agente que se sai bem com usuários pacientes e não-técnicos, mas mal com especialistas impacientes, revela uma lacuna de qualidade específica que você pode abordar. Executar o mesmo objetivo em múltiplas configurações de persona transforma a simulação de usuário em uma ferramenta para entender as forças e fraquezas do seu agente por tipo de usuário.

    Melhores práticas para avaliação baseada em simulação

    Essas melhores práticas ajudam a aproveitar ao máximo a avaliação baseada em simulação:

    • Defina max_turns com base na complexidade da tarefa, usando 3-5 para tarefas focadas e 8-10 para workflows multi-etapa. Se a maioria das conversas atingir o limite sem completar o objetivo, aumente-o.
    • Escreva descrições de tarefa específicas que o simulador possa avaliar. “Ajude o usuário a reservar um voo” é muito vago para julgar a conclusão de forma confiável, enquanto “reserva de voo confirmada com datas, destino e preço” oferece um alvo concreto.
    • Use perfis gerados automaticamente para ampla cobertura em tipos de usuários e perfis personalizados para reproduzir padrões específicos de seus logs de produção, como um especialista impaciente ou um usuário de primeira vez.
    • Concentre-se em padrões em seu suite de testes em vez de transcritos individuais. Redirecionamentos consistentes do usuário simulado sugerem que o agente está se desviando do tópico, e taxas de conclusão de objetivo em declínio após uma mudança de agente apontam para uma regressão.
    • Comece com um pequeno conjunto de casos de teste cobrindo seus cenários mais comuns e expanda para casos extremos e personas adicionais conforme sua prática de avaliação amadurece.

    Conclusão

    A AWS demonstra como o ActorSimulator no Strands Evals possibilita avaliação sistemática multi-rodada de agentes de IA conversacional através de simulação realista de usuários. Em vez de depender de casos de teste estáticos que capturam apenas trocas únicas, você pode definir objetivos e personas e deixar usuários simulados interagirem naturalmente com seu agente em conversas adaptativas.

    Para começar, explore os exemplos funcionais no repositório de exemplos do Strands Agents. Para equipes que avaliam agentes implantados através do Amazon Bedrock AgentCore, o exemplo de avaliações do AgentCore demonstra como simular interações com agentes implantados. Comece com um punhado de casos de teste representando seus cenários de usuário mais comuns, execute-os através do ActorSimulator e avalie os resultados. Conforme sua prática de avaliação amadurece, expanda para cobrir mais personas, casos extremos e padrões de conversa.

    Fonte

    Simulate realistic users to evaluate multi-turn AI agents in Strands Evals (https://aws.amazon.com/blogs/machine-learning/simulate-realistic-users-to-evaluate-multi-turn-ai-agents-in-strands-evals/)

  • Quatro Princípios de Segurança para Sistemas de IA Autônoma

    O Desafio Único da IA Autônoma

    A chegada da IA autônoma marca uma mudança qualitativa em como o software funciona. Diferentemente do software tradicional, que executa instruções determinísticas, ou da IA generativa, que responde a comandos humanos gerando saídas para revisão humana, a IA autônoma opera de forma fundamentalmente diferente.

    Agentes de IA conectam-se a ferramentas de software e APIs, utilizando modelos de linguagem de grande escala (Large Language Models — LLMs) como mecanismos de raciocínio para planejar e executar sequências de ações de forma autônoma — à velocidade das máquinas — com consequências no mundo real. Essa transformação traz questões inéditas para a segurança da informação.

    Em janeiro de 2026, o Centro para Padrões de IA e Inovação (CAISI, na sigla em inglês) do NIST emitiu um pedido de informações (Request for Information — RFI) buscando contribuições da indústria sobre como proteger esses sistemas. A AWS respondeu baseando-se em sua experiência construindo e operando serviços de IA autônoma, apresentando quatro princípios de segurança que formam o núcleo dessa abordagem.

    Por Que Isso Importa

    Uma análise conservadora de riscos e benefícios mostra claramente que os benefícios da IA autônoma superam os riscos em muitos domínios. A adoção acelerada dessa tecnologia em negócios e governo confirma essa conclusão. Porém, justamente porque os agentes são valiosos por sua autonomia e adaptabilidade, essas características criam desafios de segurança.

    Um sistema autônomo que executa uma ação não intencional faz isso à velocidade da máquina, antes que qualquer intervenção humana seja possível. Diferentemente de pessoas que fazem pausas ou escalações quando algo parece incomum, agentes podem não reconhecer naturalmente ambiguidades evidentes para humanos, nem compreender intuitivamente fronteiras políticas não explicitadas.

    A boa notícia é que a resposta de segurança para IA autônoma não precisa começar do zero. Frameworks de segurança consolidados — incluindo o NIST Cybersecurity Framework, o NIST AI Risk Management Framework e o Secure Software Development Framework — continuam relevantes. O desafio é estendê-los para considerações específicas de agentes, em vez de substituí-los.

    Os Quatro Princípios de Segurança

    Esses princípios partem da premissa de que IA autônoma não exige um novo paradigma de segurança, mas sim a evolução de práticas existentes. Os dois primeiros abordam o que continua válido; os dois últimos tratam do que é genuinamente novo.

    Princípio 1: Práticas de Ciclo de Vida Seguro em Todos os Componentes

    Sistemas de IA autônoma combinam componentes de software tradicional (APIs, bancos de dados, lógica de orquestração) com elementos de IA, como modelos fundamentais, templates de prompts e pipelines de recuperação de dados. Um ciclo de vida de desenvolvimento seguro deve cobrir ambos os conjuntos.

    Para componentes tradicionais, práticas estabelecidas como revisão de código, análise estática, varredura de dependências e modelagem de ameaças permanecem essenciais, reconhecendo que essas próprias práticas estão evoluindo com o auxílio de ferramentas baseadas em IA.

    Para componentes de IA, o desafio é diferente. Modelos fundamentais são probabilísticos, o que significa que testes de regressão tradicionais são necessários, mas insuficientes. Organizações devem complementar com testes comportamentais, avaliação adversarial e monitoramento contínuo para validar que componentes de IA operam dentro de parâmetros esperados.

    A reavaliação regular é igualmente importante para lidar com deriva comportamental. Modelos recebem atualizações que podem alterar seu comportamento. Templates de prompts evoluem conforme equipes refinam capacidades do agente. Novas ferramentas e fontes de dados expandem a superfície operacional. Cada mudança pode introduzir novos modos de falha ou problemas de segurança.

    Organizações devem tratar a avaliação como prática operacional contínua, não como uma barreira única no tempo. Isso inclui testes automatizados após atualizações de modelo, exercícios de red team contra agentes em produção e monitoramento que detecta deriva comportamental ao longo do tempo.

    Princípio 2: Controles de Segurança Tradicionais Continuam Totalmente Aplicáveis

    Embora IA autônoma introduza novas considerações, ela não torna obsoletos os riscos de segurança existentes. O conjunto completo de controles de segurança tradicionais permanece aplicável. Um sistema de IA autônoma combina software tradicional com o novo loop de processamento LLM-mais-ferramentas. Organizações devem proteger software, ferramentas e configurações existentes contra riscos conhecidos para prover uma base sólida para os elementos de IA.

    Escalação de privilégio, problemas de deputy confuso, sequestro de sessão, injeção de código e riscos de cadeia de suprimentos estendem-se diretamente para sistemas autônomos. Alguns desses riscos aumentam em contextos de IA autônoma. Agentes operam em maior escala e velocidade que atores humanos, o que significa que privilégios excessivos carregam maior potencial para consequências não intencionais.

    Aplicar princípios de menor privilégio (least privilege) à gestão de acesso em contexto autônomo é tão importante — se não mais — que em sistemas tradicionais. A superfície de cadeia de suprimentos também é mais ampla. Sistemas autônomos consomem não apenas dependências de código de terceiros, mas também modelos fundamentais, plugins, servidores de ferramentas e fontes de recuperação de dados.

    Agentes que invocam APIs, consultam bancos de dados ou geram código criam novas superfícies potenciais de injeção nos limites das ferramentas. Controles específicos de IA devem ser adições a essa segurança fundamental, não substituições.

    Princípio 3: Controles Determinísticos Externos como Ponto de Partida

    Este é o princípio arquitetônico mais importante para segurança de IA autônoma. Organizações devem fazer cumprir segurança através de controles determinísticos e no nível de infraestrutura, externos ao loop de raciocínio do agente, e não através do próprio raciocínio do agente, guardrails internos ou instruções baseadas em prompts.

    A lógica é simples: LLMs são mecanismos de raciocínio probabilístico, não mecanismos de execução de segurança. Desenvolvedores podem instruir um LLM a recusar certas solicitações, mas técnicas de prompt injection podem contornar essas instruções. Um LLM pode ser instruído a respeitar limites de acesso, mas não possui mecanismo confiável para mantê-los.

    Tentar restringir comportamento de agentes apenas através de prompting ou alignment vai contra a própria proposta de valor dos agentes: sua capacidade de adaptar-se dinamicamente a situações novas. Segurança eficaz coloca controles totalmente especificados e determinísticos fora do agente, governando quais ferramentas ele pode acessar, quais operações pode realizar e quais dados pode alcançar. Manipulação de modelo não consegue contornar esses controles.

    Isso é descrito como a caixa de segurança (security box). É externa ao agente, determinística em sua execução e abrangente em cobertura. Cada interação entre agente e o mundo externo passa por ela. O Agentic AI Security Scoping Matrix ajuda organizações a calibrar o rigor desses controles baseado no nível de autonomia do sistema. Os escopos variam desde sistemas que exigem aprovação humana explícita antes de cada ação até sistemas totalmente autônomos que iniciam suas próprias atividades baseados em eventos externos.

    A caixa de segurança não é uma limitação ao valor do agente. É a precondição para alcançar esse valor responsavelmente. Conforme a tecnologia de IA autônoma amadurece, a própria caixa provavelmente evoluirá para incluir elementos de IA — agentes de IA especializados em controlar o escopo de outros agentes podem eventualmente substituir alguns constrangimentos determinísticos, usando novas informações e contexto para tomar decisões automatizadas mais apropriadas do que aquelas que poderiam ser alcançadas por humanos gerenciando controles determinísticos complexos.

    Princípio 4: Maior Autonomia Deve Ser Conquistada Através de Avaliação Contínua

    Organizações devem expandir autonomia de agentes progressivamente baseadas em desempenho demonstrado, não concedê-la por padrão. O ponto de partida é tomada de decisão humana para operações de alta consequência. Quando um agente encontra uma ação que poderia modificar dados críticos de produção, iniciar transações financeiras ou comunicar informações sensíveis externamente, um humano toma a decisão final. O agente recomenda, e um humano aprova ou rejeita.

    Essa abordagem traz um risco conhecido: se toda ação de agente exigir aprovação humana, o volume de decisões pode sobrecarregar revisores. A aprovação torna-se reflexiva em vez de deliberada, mudando responsabilidade para humanos posicionados para falhar. Organizações devem limitar supervisão humana a operações genuinamente de alta consequência e resistir à tentação de exigir designs human-in-the-loop para ações rotineiras que carregam baixo risco.

    O caminho da supervisão humana para autonomia expandida passa por avaliação. Conforme organizações sistematicamente registram o que o agente recomendou, o que o humano decidiu e o que realmente aconteceu, constroem base de evidências para expandir autonomia. Quando dados mostram alinhamento sustentado, organizações podem mudar de aprovação prévia para revisão pós-fato, e eventualmente para autonomia total para tipos de operação específicos.

    Essa progressão deve acontecer no nível de operação ou fluxo de trabalho, não através de ampla gama de tarefas não relacionadas. Essa progressão não é unidirecional. Organizações devem estar preparadas para reintroduzir supervisão humana quando evidência justificar. Algumas fronteiras determinísticas provavelmente permanecem permanentes no futuro próximo — essas fronteiras existem não porque o agente não conquistou confiança, mas porque consequências de certas ações são inaceitáveis sob análise de risco razoável.

    O modelo geral é autonomia conquistada através de competência demonstrada, governada por avaliação, limitada por constrangimentos permanentes e sujeita a revisão contínua.

    Dos Princípios à Prática

    Os quatro princípios definem os objetivos. Alcançá-los exige blocos arquitetônicos específicos que compõem a caixa de segurança e a arquitetura de segurança mais ampla. A AWS descreveu esses blocos em maior detalhe em sua resposta ao NIST e os implementou no Amazon Bedrock AgentCore, um framework para construir, implantar e operar sistemas de IA autônoma com segurança incorporada desde o início.

    Isolamento de Computação

    Ambientes de computação de agentes devem isolar execução, prevenir vazamento de dados entre agentes e conter agentes dentro de limites definidos. O Amazon Bedrock AgentCore executa agentes em Firecracker, um gerenciador de máquina virtual open source escrito em Rust. Firecracker fornece micro-VMs leves apoiadas por Linux KVM e virtualização baseada em hardware, entregando velocidade de containers com propriedades de isolamento de máquinas virtuais completas. Elementos críticos de segurança do Firecracker foram formalmente verificados por equipes AWS, adicionando garantia além da segurança de memória que Rust oferece.

    Identidade e Gestão de Acesso

    Agentes exigem suas próprias identidades, armazenamento seguro de credenciais e autorização com menor privilégio executada no nível de infraestrutura. O AgentCore Identity fornece identidades de máquina para agentes, gerencia fluxos OAuth e credenciais seguras, e integra-se com o AWS Identity and Access Management (IAM) para controle de acesso fino. Suporta controle de acesso baseado em atributos e mantém cadeias de delegação rastreáveis para que a relação entre ações de agente e o usuário invocador permaneça auditável.

    Acesso a Ferramentas e Execução de Políticas

    Cada ferramenta que um agente pode acessar expande tanto sua utilidade quanto seu risco potencial. Gerenciar acesso a ferramentas individualmente entre agentes cria uma explosão combinatória ingerenciável. O AgentCore Gateway atua como intermediário centralizado entre agentes e ferramentas, executando autenticação e autorização em um único ponto de controle. Consegue inspecionar chamadas de ferramentas até parâmetros individuais, não apenas no nível de API. O AgentCore Policy, construído sobre a linguagem de autorização open source Cedar, adiciona execução de política formalmente verificada. Equipes conseguem escrever políticas Cedar em linguagem natural e então revisá-las, combinando flexibilidade de LLMs com rigor de métodos formais.

    Observabilidade

    Infraestrutura de observabilidade deve capturar contexto suficiente para monitoramento em tempo real e investigação, e deve estar protegida dos agentes que monitora. Organizações não permitiriam que funcionários editassem seus próprios registros de auditoria, e o mesmo princípio aplica-se a agentes. O AgentCore oferece observabilidade através do AgentCore Gateway, telemetria em nível de sessão e rastreamentos detalhados que registram mudanças de estado interno. Essas capacidades conseguem estender-se a agentes rodando fora do AgentCore também.

    Ambiente de Execução de Modelo

    A segurança do ambiente de execução de modelo importa tanto quanto a segurança do agente em si. O Amazon Bedrock executa modelos em ambientes de rede isolados onde nem AWS nem provedores de modelo acessam prompts e respostas de clientes. Quando clientes ativam logging, esses logs são encriptados em repouso e protegidos por chaves de encriptação gerenciadas pelo cliente. Esse isolamento arquitetônico é razão-chave para adoção por clientes governamentais e corporativos.

    Controles determinísticos externos são complementados por controles dentro do loop de processamento de IA. O Amazon Bedrock Guardrails inspeciona prompts e respostas usando pequenos modelos de IA chamados classificadores que lidam com desafios como prompt injection. Verificações de Raciocínio Automatizado vão além, permitindo desenvolvedores criar modelo formal de um domínio de conhecimento e verificar que saídas de LLM conformam com ele, produzindo resultados que são determinísticos e comprovadamente corretos.

    Caminho Adiante

    IA autônoma muda como software opera, mas a resposta de segurança constrói sobre décadas de prática estabelecida. Frameworks existentes oferecem a fundação certa. A tarefa é estender frameworks existentes para considerações específicas de agentes. Organizações devem aplicar práticas de ciclo de vida de desenvolvimento seguro a componentes de IA e manter controles de segurança tradicionais. Devem fazer cumprir segurança através de controles determinísticos externos ao agente e conquistar maior autonomia através de avaliação sistemática.

    Esses princípios não são teóricos — refletem experiência operacional que a AWS conquistou construindo e operando serviços de IA autônoma. Estão embutidos em como a empresa desenha sua infraestrutura. Conforme NIST desenvolve orientação baseada em contribuições da indústria, a AWS continuará investindo em ajudar clientes a construir e operar sistemas de IA autônoma com confiança.

    Para aprender mais sobre como a AWS ajuda clientes a proteger suas cargas de trabalho de IA, visite o AWS AI Security ou leia a resposta da Amazon ao Pedido de Informações do CAISI sobre Considerações de Segurança para Agentes de Inteligência Artificial.

    Fonte

    Four security principles for agentic AI systems (https://aws.amazon.com/blogs/security/four-security-principles-for-agentic-ai-systems/)

  • CloudFront agora suporta SHA-256 em URLs e cookies assinados

    Novo algoritmo de hash para assinatura de conteúdo

    A AWS anunciou o suporte para SHA-256 (Secure Hash Algorithm-256) como algoritmo de hash no Amazon CloudFront, expandindo as opções de segurança para a assinatura de URLs e cookies. Essa adição representa um avanço importante na postura de segurança da plataforma, alinhando-se com os padrões criptográficos modernos e oferecendo proteção mais robusta contra colisões de hash.

    Anteriormente, o CloudFront utilizava exclusivamente SHA-1 para gerar assinaturas em URLs e cookies assinados. O SHA-256 oferece maior força criptográfica e é amplamente reconhecido como o padrão contemporâneo para operações de assinatura digital.

    Implementação e compatibilidade

    A implementação do SHA-256 no CloudFront foi desenvolvida mantendo total retrocompatibilidade com as configurações existentes. URLs e cookies assinados que não especificam um algoritmo de hash continuam utilizando SHA-1, permitindo uma transição suave para quem desejar migrar.

    Para utilizar SHA-256, é necessário incluir o parâmetro Hash-Algorithm=SHA256 na URL assinada, ou o atributo de cookie CloudFront-Hash-Algorithm=SHA256 para cookies assinados. Essa abordagem simples permite que os usuários adotem o novo padrão conforme suas necessidades operacionais.

    Benefícios de conformidade e segurança

    O suporte a SHA-256 atende aos requisitos de segurança e conformidade que exigem explicitamente o uso desse algoritmo para assinaturas digitais. Muitas organizações, especialmente em setores regulados, já mandatam o uso de SHA-256 em suas políticas de segurança da informação.

    Além disso, a mudança contribui para future-proofing dos fluxos de trabalho de entrega de conteúdo, preparando as aplicações para padrões que tendem a ser cada vez mais exigentes em relação a práticas criptográficas.

    Disponibilidade e custo

    Este recurso está disponível em todas as localizações de borda onde o Amazon CloudFront opera. Importante: não há custo adicional para utilizar a assinatura com SHA-256.

    Para aprofundar-se na implementação, a AWS oferece documentação técnica detalhada. Consulte como criar uma URL assinada utilizando uma política enlatada ou como configurar cookies assinados utilizando uma política enlatada no Guia de Desenvolvedor do Amazon CloudFront.

    Fonte

    Amazon CloudFront now supports SHA-256 for signed URLs and signed cookies (https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-cloudfront-sha-256-signed-urls/)

  • Amazon ECS anuncia Daemons Gerenciados para Instâncias ECS Gerenciadas

    O que são Daemons Gerenciados no ECS?

    A AWS anunciou a disponibilidade de uma funcionalidade chamada Managed Daemons (Daemons Gerenciados) para o ECS Managed Instances (Instâncias ECS Gerenciadas). Este novo recurso permite que organizações implantem e gerenciem de forma centralizada agentes de software essenciais — como ferramentas de segurança, observabilidade e conectividade — em toda a infraestrutura de containers, sem precisar acoplá-los aos ciclos de vida das aplicações.

    Benefícios Principais

    Uma das vantagens mais significativas dos Daemons Gerenciados é o desacoplamento entre o ciclo de vida dos agentes e as operações das aplicações. Essa separação ajuda a garantir cobertura confiável de agentes em todos os workloads, simplifica o processo de implantação e atualização de versões, além de melhorar a utilização de recursos ao executar um único task daemon por instância gerenciada.

    O recurso funciona permitindo que você crie um daemon para um ou mais provedores de capacidade (capacity providers) de Instâncias Gerenciadas em seu cluster. O ECS coloca exatamente um task daemon por instância gerenciada e garante que os daemons estejam em execução antes de qualquer task de aplicação ser iniciada. Dessa forma, funções transversais como logging, tracing e coleta de métricas ficam sempre disponíveis.

    Orquestração Independente

    A AWS orquestra os daemons como processos independentes vinculados ao ciclo de vida da instância, em vez de tarefas individuais de aplicação. Isso permite que administradores de plataforma gerenciem os agentes de forma independente das equipes de aplicação, reduzindo possíveis conflitos operacionais e simplificando a governança.

    Atualizações Confiáveis

    Quando você atualiza versões de daemon, o ECS realiza drenagem das instâncias existentes e provisiona novas instâncias com o daemon atualizado. O processo inclui proteção de circuit breaker e capacidades de rollback automático para garantir cobertura confiável em todos os seus workloads.

    Como Começar

    Para começar, você pode utilizar o AWS Console, CLI, CloudFormation ou AWS SDKs para registrar uma definição de task daemon especificando sua imagem de container e, em seguida, criar um daemon com provedores de capacidade associados em seus clusters. O recurso está disponível em todas as regiões da AWS.

    Para mais detalhes, consulte a documentação e o artigo de lançamento da AWS. Não há custo adicional — você paga apenas pelos recursos computacionais padrão consumidos pelos seus tasks daemon.

    Fonte

    Amazon ECS announces Managed Daemons for ECS Managed Instances (https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-ecs-managed-daemons/)

  • Amazon SageMaker Data Agent agora suporta inferência geográfica específica para Japão e Austrália

    Novo suporte para inferência geográfica específica

    A AWS expandiu as capacidades do Amazon SageMaker Data Agent para atender requisitos de residência de dados em regiões específicas. A plataforma agora oferece suporte a perfis de inferência entre regiões para Japão e Austrália, funcionando através do Amazon Bedrock. Com esta atualização, solicitações de inferência originadas do Data Agent nas regiões Ásia Pacífico (Tóquio) e Ásia Pacífico (Sydney) são processadas dentro de suas respectivas geografias, garantindo conformidade com exigências de soberania de dados para clientes localizados nestes países.

    O que é o SageMaker Data Agent

    O Data Agent é um assistente alimentado por inteligência artificial que oferece uma experiência conversacional para exploração de dados. Através da plataforma SageMaker Unified Studio, profissionais podem utilizar o Data Agent para geração de código Python e SQL, solução de problemas e análises diretamente em notebooks e no Query Editor. A ferramenta simplifica tarefas técnicas complexas ao permitir que os usuários interajam naturalmente com seus dados.

    Inferência com confinamento geográfico

    O recurso de inferência geográfica específica implementa dois mecanismos: JP-CRIS (Inferência entre Regiões no Japão) e AU-CRIS (Inferência entre Regiões na Austrália). Estes perfis garantem que as solicitações de inferência do Data Agent sejam roteadas exclusivamente dentro da geografia correspondente, utilizando a rede global da AWS. Isso permite que os usuários confiem que seus dados permanecem dentro das fronteiras geográficas especificadas, atendendo rigorosamente aos requisitos de localidade de dados.

    Benefícios para setores regulados

    Clientes em setores altamente regulamentados — como serviços financeiros, saúde e setor público — conseguem cumprir requisitos de residência de dados mantendo total acesso às capacidades completas do Data Agent. A combinação de conformidade regulatória com funcionalidades avançadas de análise através de inteligência artificial oferece um equilíbrio entre segurança, privacidade e capacidades técnicas.

    Como começar

    Para utilizar este novo recurso, abra um projeto no SageMaker Unified Studio em uma região suportada e utilize o Data Agent em notebooks ou Query Editor. Para mais detalhes sobre funcionalidades e configuração, consulte o guia do usuário do Amazon SageMaker Unified Studio.

    Fonte

    Amazon SageMaker Data Agent now supports geo-specific inference for Japan and Australia (https://aws.amazon.com/about-aws/whats-new/2026/03/sage-maker-da-infr-jp-au/)

  • Amazon SES Mail Manager recebe novas funcionalidades para segurança e processamento de e-mails aprimorados

    Novas capacidades do Amazon SES Mail Manager

    A AWS ampliou as funcionalidades do Amazon SES Mail Manager (Gerenciador de E-mails do Serviço de E-mail Simples), oferecendo agora melhorias significativas para segurança de e-mails e processamento de mensagens. Ao mesmo tempo, o serviço simplifica migrações de infraestrutura de e-mail para organizações que buscam modernizar seus ambientes.

    Recursos de segurança e autenticação reforçados

    Suporte a TLS e autenticação por certificado

    O Ingress Endpoint (Ponto de Entrada de Entrada) do Mail Manager agora oferece suporte opcional a TLS (Segurança de Camada de Transporte) e autenticação baseada em certificados, conhecida como mTLS (TLS Mútuo). Essa melhoria é particularmente valiosa para organizações que precisam equilibrar a compatibilidade com sistemas mais antigos enquanto implementam controles de segurança mais fortes.

    Com a configuração opcional de STARTTLS, clientes podem agora manter conectividade com sistemas legados que não suportam este protocolo nativamente. Paralelamente, o suporte a mTLS no Ingress Endpoint permite autenticação baseada em certificados, elevando o nível de segurança das comunicações de e-mail.

    Novas ações de processamento de e-mails

    Invocação de funções Lambda e resposta de rejeição

    O Mail Manager introduz duas novas ações de regras que expandem significativamente as capacidades de processamento:

    • Invocar função Lambda: permite que regras disparem diretamente funções AWS Lambda a partir de conjuntos de regras, abrindo possibilidades para fluxos de trabalho personalizados de processamento de e-mails e automação avançada.
    • Ação Bounce (Rejeição): oferece respostas SMTP em conformidade com RFC aos servidores de envio, possibilitando tratamento mais granular de e-mails rejeitados.

    Disponibilidade e próximos passos

    Essas melhorias já estão disponíveis em todas as regiões AWS onde o Amazon SES Mail Manager é oferecido, com exceção das regiões Middle East (Emirados Árabes Unidos) e Middle East (Bahrein).

    Para aprofundar conhecimento sobre o Amazon SES Mail Manager e como estas funcionalidades podem otimizar operações de e-mail em sua organização, consulte a documentação completa do serviço.

    Fonte

    Amazon SES Mail Manager adds new features for enhanced security and email processing (https://aws.amazon.com/about-aws/whats-new/2026/04/ses-mail-manager-introduces-new-features/)

  • Controles de Encriptação de VPC Agora Disponíveis em Regiões AWS GovCloud (US)

    Novo Recurso para Conformidade e Segurança em Nuvem Governamental

    A AWS anunciou o lançamento dos Controles de Encriptação de VPC nas regiões AWS GovCloud (US), um recurso desenvolvido especificamente para atender às necessidades de órgãos governamentais e instituições com requisitos rigorosos de conformidade. A funcionalidade permite auditar e enforçar encriptação em trânsito dentro e entre Amazon Virtual Private Clouds (VPC), facilitando a demonstração de conformidade com padrões de encriptação exigentes.

    Como Funciona o Monitoramento de Encriptação

    O recurso pode ser ativado em VPCs existentes para monitorar o status de encriptação dos fluxos de tráfego e identificar recursos de VPC que permitem, sem intencionalidade, tráfego em texto plano. Além do monitoramento, os Controles de Encriptação de VPC facilitam o enforcement de encriptação em diferentes caminhos de rede ao ligar automaticamente (e de forma transparente) a encriptação baseada em hardware AES-256 no tráfego entre múltiplos recursos de VPC.

    Recursos Suportados

    O recurso funciona com diversos serviços da AWS, incluindo AWS Fargate, Network Load Balancers e Application Load Balancers, garantindo uma cobertura abrangente de caminhos de rede típicos em ambientes de nuvem.

    Encriptação em Múltiplas Camadas

    Clientes governamentais dependem tanto de encriptação na camada de aplicação quanto da encriptação baseada em hardware que a AWS oferece em diferentes caminhos de rede para atender a padrões rigorosos como HIPAA, PCI DSS (Padrão de Segurança da Indústria de Cartões de Pagamento), FedRAMP e FIPS 140-2 (Padrão Federal de Processamento de Informações).

    A AWS já oferecia encriptação baseada em hardware AES-256 de forma transparente entre instâncias EC2 Nitro modernas. A empresa também encripta todo tráfego de rede entre datacenters AWS dentro e entre Zonas de Disponibilidade e Regiões antes do tráfego sair de suas instalações seguras. Adicionalmente, todo tráfego entre regiões que utiliza VPC Peering, Transit Gateway Peering ou AWS Cloud WAN recebe uma camada adicional de encriptação transparente antes de deixar os datacenters AWS.

    Simplificação da Auditoria e Conformidade

    Anteriormente, clientes precisavam rastrear e confirmar manualmente encriptação em todos os caminhos de rede. Com os Controles de Encriptação de VPC, agora é possível monitorar, enforçar e demonstrar encriptação dentro e entre Virtual Private Clouds em apenas alguns cliques.

    O time de segurança da informação pode ativar o recurso centralmente para manter um ambiente seguro e em conformidade, gerando logs de auditoria para conformidade e relatórios necessários para validações internas e externas.

    Disponibilidade Regional

    Com este lançamento, os Controles de Encriptação de VPC agora estão disponíveis nas regiões AWS GovCloud (US-East) e AWS GovCloud (US-West). Para conhecer mais sobre este recurso e seus casos de uso, consulte a documentação técnica.

    Fonte

    AWS VPC Encryption Controls now available in AWS GovCloud (US) Regions (https://aws.amazon.com/about-aws/whats-new/2026/03/aws-vpc-encryption-controls/)