Agentes em
Produção.
Feche a trilha levando seus agentes para o mundo real com segurança e previsibilidade: escolha entre AWS Lambda, Amazon ECS (Fargate) e Amazon Bedrock AgentCore Runtime, exponha APIs via Gateway e Identity, avalie comportamento com AgentCore Evaluations, instrumente traces OpenTelemetry no Jaeger/Langfuse/LangSmith e blinde tudo com Bedrock Guardrails e políticas determinísticas em Cedar.
Trilha de formação: Construindo e escalando Agentes de IA na AWS
Você chegou à Etapa 4, o fechamento da trilha: transformar protótipos que funcionam no notebook em sistemas corporativos confiáveis, observáveis, avaliados e auditáveis na AWS.
Percurso da Etapa 4 (Produção, Monitoramento e Governança)
Cada oficina traz a engenharia prática de produção dos Capítulos 6 e 7 para você operar agentes com SLA, controle de custos e conformidade.
Domine inicialização fora do handler, imagens de 10 GB no Lambda, servidores FastAPI sempre ativos no ECS e os 5 choques da produção.
OFICINA 02AgentCore Runtime e MicroVMs ↗Isole cada usuário em microVM dedicada pagando só por tempo Active, use @app.entrypoint com qualquer framework e compare Lambda/ECS/Runtime.
OFICINA 03Gateway, Identity e 4 Indústrias ↗Converta specs OpenAPI em tools MCP com Semantic Search, separe tokens inbound/outbound e aplique RDS Proxy, SQS/DLQ e casos reais.
OFICINA 04Avaliação com AgentCore Evaluations ↗Avalie Session, Trace e Span com Built-in (GoalSuccessRate, Correctness) e Custom LLM-as-a-judge em modo Online ou On-demand.
OFICINA 05OTel, Jaeger, Langfuse, LangSmith ↗Instrumente StrandsTelemetry, exporte traces para Jaeger/Langfuse/LangSmith/CloudWatch e simule alarmes de custo em loops.
OFICINA 06Amazon Bedrock Guardrails ↗Filtre PII, tópicos proibidos e alucinações RAG na entrada e saída do modelo — e entenda o que guardrails de texto não bloqueiam.
OFICINA 07AgentCore Policy e Linguagem Cedar ↗Intercepte chamadas de ferramentas fora do LLM com regras determinísticas em Cedar baseadas em parâmetros e identidade autenticada.
OFICINA 08Audit Trails WORM e Incidentes ↗Construa trilhas imutáveis (OTel → CloudWatch → S3 Object Lock), Model Cards e playbooks de contenção imediata às 2h da manhã.
“Guardrails controlam o que o agente diz; AgentCore Policy com Cedar controla o que o agente faz; humanos respondem pela governança.”
Baseado nos Capítulos 6 (Production Deployment and Enterprise Integration) e 7 (Evaluation, Observability, and AI Governance) de AI Agents on AWS (Packt, 2026).Do Laptop para Produção: AWS Lambda vs. Amazon ECS (Fargate)
No laptop tudo funciona para um documento por vez. Quando 200 usuários batem ao mesmo tempo às 2h da manhã, o que quebra primeiro — e como escolher entre funções serverless (Lambda) e contêineres sempre ativos (ECS Fargate)?
AWS Lambda: Serverless e Event-Driven (Figura 6.1, págs. 180–184)
- Inicialização fora do Handler: instancie
BedrockModeleAgentfora delambda_handler(event, context)para reutilizar conexões em invocações quentes. - Dois ARNs no IAM e Model ID completo: sempre inclua
arn:aws:bedrock:*::foundation-model/*earn:aws:bedrock:*:${AWS::AccountId}:inference-profile/*, usando o ID completo com versão (ex.:us.anthropic.claude-sonnet-4-20250514-v1:0). - Container Image (até 10 GB): dependências de agentes estouram facilmente o limite de 250 MB de zip; use
PackageType: Imageno SAM. - 3 Restrições do Lambda: Statelessness (persista estado no DynamoDB), Cold starts (2–5s) e Teto de 15 min (ou Durable Functions).
Amazon ECS (Fargate): Always-On e Multiagente (Figura 6.2, págs. 184–187)
No ECS, seu agente deixa de ser uma função disparada por evento e vira um servidor web FastAPI sempre ouvindo atrás de um Application Load Balancer. É a escolha certa para sistemas multiagentes in-process (6 agentes conversando sem latência de rede) e workloads com startup caro (pools de banco ou sessões OAuth).
# --- AWS Lambda: inicialize fora do handler ---
from strands import Agent
from strands.models.bedrock import BedrockModel
model = BedrockModel(model_id="us.anthropic.claude-sonnet-4-20250514-v1:0")
agent = Agent(model=model, system_prompt="You are a document analysis assistant...")
def lambda_handler(event, context):
doc = event["body"]["document_text"]
return {"statusCode": 200, "body": str(agent(f"Analyze:\n\n{doc}"))}
# --- Amazon ECS (Fargate): servidor web FastAPI ---
from fastapi import FastAPI
app = FastAPI()
@app.post("/schedule")
async def schedule(request: dict):
for msg in request.get("history", []):
agent.messages.append({"role": msg["role"], "content": [{"text": msg["content"]}]})
return {"reply": str(agent(request["message"]))}Entrega da etapa
Analise seu agente: ele tem execuções curtas e independentes (< 15 min, ideal para Lambda) ou sessões contínuas/multiagente in-process (ideal para ECS Fargate)?
Conexão com o livro · Capítulo 6 (págs. 178–187) · What changes in production, AWS Lambda (Figura 6.1) e Amazon ECS (Figura 6.2).
Amazon Bedrock AgentCore: Arquitetura Modular e Runtime com MicroVMs
Por que gastar semanas construindo isolamento por sessão, propagação de identidade e observabilidade de raciocínio em cima de ECS ou Lambda quando o AgentCore entrega isso como plataforma gerenciada?
Runtime com MicroVM Dedicada e Tabela 6.1 (Figuras 6.3 a 6.5)
No AgentCore Runtime, cada sessão de usuário recebe sua própria microVM isolada (zero vazamento de memória ou arquivos temporários entre clientes). A sessão alterna entre Active, Idle (timeout padrão de 15 min — você paga apenas pelo tempo Active!) e Terminated, suportando até 15 min síncrono, 60 min streaming e 8 horas assíncrono (via HealthyBusy / add_async_task). É 100% framework-agnostic (Strands, LangGraph, CrewAI, Claude Agent SDK) e exige imagens ARM64 (Graviton).
| Critério | AWS Lambda | Amazon ECS (Fargate) | AgentCore Runtime |
|---|---|---|---|
| Modelo de Sessão | Stateless (independente) | Contêiner compartilhado | MicroVM dedicada por sessão |
| Estado entre Turnos | Externo (DynamoDB) | Em memória no contêiner | Mantido na microVM |
| Execução Máxima | 15 min por invocação | Sem limite | 15m sync / 60m stream / 8h async |
| Modelo de Cobrança | Por invocação + duração | vCPU/memória alocados 24/7 | Apenas tempo Active (pausa em Idle) |
| Auth, Policy, Observability | Você constrói | Você constrói | Serviços gerenciados integrados |
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.models.bedrock import BedrockModel
app = BedrockAgentCoreApp()
agent = Agent(model=BedrockModel(model_id="us.anthropic.claude-sonnet-4-20250514-v1:0"))
@app.entrypoint
def handle(payload):
return agent(payload.get("prompt")).message["content"][0]["text"]
if __name__ == "__main__":
app.run() # Expõe /invocations e /ping automaticamente na porta 8080
# Deploy automatizado com Starter Toolkit (gera Dockerfile ARM64, IAM e ECR):
# runtime = Runtime()
# runtime.configure(entrypoint="agent.py", requirements_file="requirements.txt",
# auto_create_execution_role=True, auto_create_ecr=True, agent_name="doc-agent")
# launch_result = runtime.launch()Entrega da etapa
Avalie se o AgentCore Runtime elimina trabalho indiferenciado no seu projeto ou se você precisa de controle de rede VPC/GPU que justifique ficar no ECS.
Conexão com o livro · Capítulo 6 (págs. 187–197) · Amazon Bedrock AgentCore (Figuras 6.3 a 6.5 e Tabela 6.1).
AgentCore Gateway, Semantic Search, Identity e Integração Corporativa
Empresas não têm servidores MCP prontos para tudo — elas têm centenas de APIs REST em OpenAPI, bancos Aurora e filas SQS. Como conectar tudo sem escrever wrappers manuais nem vazar tokens?
- AgentCore Gateway (Figura 6.6): aponte para uma spec OpenAPI no S3 (
create_gateway_target), uma Lambda ou servidor MCP remoto e o Gateway gera ferramentas MCP automaticamente. Quando há 200+ tools, a ferramentax_amz_bedrock_agentcore_searchfaz busca semântica para carregar apenas as relevantes no prompt. - AgentCore Identity (págs. 201–202): valida tokens JWT inbound (Cognito, Okta, Entra ID) e gerencia credenciais outbound separadas em cofre criptografado via KMS (OAuth Authorization Code para dados do usuário e Client Credentials para sistema) usando
@requires_access_tokene@requires_api_key. - Resiliência e 4 Casos de Indústria (Figuras 6.7–6.10): use Amazon RDS Proxy para não esgotar conexões do Aurora, EventBridge + SQS + DLQ para absorver picos, e escolha o runtime certo: Fraude Financeira (Lambda), Agendamento Cirúrgico (AgentCore Runtime), Manutenção Preditiva IoT (ECS contínuo) e Suporte E-commerce (AgentCore Runtime).
Entrega da etapa
Mapeie as integrações corporativas do seu agente: quais APIs entrariam via AgentCore Gateway (OpenAPI), onde entraria RDS Proxy ou SQS e qual padrão OAuth (delegado vs. M2M) seria usado.
Conexão com o livro · Capítulo 6 (págs. 198–209) · AgentCore Gateway, Identity e Enterprise Integration (Figuras 6.6 a 6.10).
Avaliação de Agentes: Métricas, Built-in vs. Custom e AgentCore Evaluations
Um agente que responde com educação mas reserva voo para San Diego em vez de San Francisco falhou. Como avaliar não apenas a resposta final, mas cada escolha de ferramenta e parâmetro?
Os 3 Níveis de Avaliação e os 2 Modos de Execução (Figuras 7.1 a 7.7)
Na Figura 7.2, a avaliação cobre 4 etapas: Tool Selection, Parameter Check, Context Accuracy e Response Quality, combinando Human-in-the-loop e LLM-as-a-judge. O AgentCore Evaluations lê traces OpenTelemetry em 3 níveis (Figura 7.7): Session (Builtin.GoalSuccessRate), Trace (Builtin.Correctness, Helpfulness, Faithfulness) e Span/Tool (Tool selection accuracy, Parameter selection accuracy) — rodando de forma contínua em produção (Online) ou em traces específicos (On-demand).
from bedrock_agentcore_starter_toolkit import Evaluation eval_client = Evaluation() # Pass A: Nível de Sessão (atingiu a meta global?) eval_client.run(evaluators=["Builtin.GoalSuccessRate"]) # Pass B: Nível de Trace (precisão factual e utilidade por turno) eval_client.run(evaluators=["Builtin.Correctness", "Builtin.Helpfulness"]) # Pass C: Custom LLM-as-a-judge (reprova com 0.0 se sair do domínio de viagens!) eval_client.run(evaluators=[custom_travel_evaluator_id], output="eval_output/chapter7_results.json")
Entrega da etapa
Defina 2 métricas Built-in e 1 regra de negócio crítica para um Custom Evaluator (LLM-as-a-judge ou Code-based) do seu agente.
Conexão com o livro · Capítulo 7 (págs. 212–231) · Agent evaluation e AgentCore Evaluations (Figuras 7.1 a 7.7, Tabelas 7.1 e 7.2).
Observabilidade: OpenTelemetry, Jaeger, Langfuse, LangSmith e Simulador de Custos
Um agente que retorna HTTP 200 OK pode ter alucinado, entrado em loop de ferramentas ou gasto $12 em tokens em uma requisição que deveria custar $0,30. Como enxergar cada span de raciocínio?
A Pilha OTel + ADOT, Jaeger, Langfuse, LangSmith e CloudWatch (Figuras 7.9 a 7.13)
Instrumentar com OpenTelemetry (OTel) garante portabilidade total: o mesmo trace emitido por StrandsTelemetry().setup_otlp_exporter() pode ir para Jaeger local (docker run jaegertracing/all-in-one:latest portas 16686/4317/4318), para Langfuse (open-source, self-hostable na sua VPC em ECS Fargate + RDS), para LangSmith (playground e datasets de regressão) ou para o CloudWatch GenAI Observability (único que também captura spans de avaliação de política Cedar). Evite os 4 anti-patterns: usar print no stdout, monitorar só o happy path, ignorar custo até a fatura chegar e deixar OTel para depois do lançamento.
Simulador de Impacto Financeiro de Loops de Raciocínio em Produção
Baseado no caso real da página 238 (custo saltando de $0,15 para $2,40 por loop de tool): estime o prejuízo mensal se um bug de loop afetar parte do tráfego sem alarme de custo no CloudWatch/Langfuse.
# otel-collector-config.yaml
receivers:
otlp:
protocols:
grpc: { endpoint: 0.0.0.0:4317 }
http: { endpoint: 0.0.0.0:4318 }
exporters:
datadog:
api: { key: ${DD_API_KEY} }
otlphttp:
endpoint: https://your-langfuse-instance.com/api/public/otel
service:
pipelines:
traces:
receivers: [otlp]
exporters: [datadog, otlphttp]Entrega da etapa
Defina sua pilha de observabilidade: qual backend receberá alertas de produção (CloudWatch / Datadog) e qual plataforma fará a análise profunda de prompts e custos (Langfuse na VPC ou LangSmith)?
Conexão com o livro · Capítulo 7 (págs. 231–246) · Observability, OpenTelemetry, Jaeger, Langfuse, LangSmith e AgentCore Observability.
Segurança de Conteúdo com Amazon Bedrock Guardrails
Instruções no system_prompt como “não emita reembolsos acima de $1.000” são apenas sugestões — não regras de compliance. Como filtrar entradas e saídas de texto com Amazon Bedrock Guardrails e onde estão seus limites?
O que Guardrails Fazem Bem vs. O que Não Resolvem (págs. 247–248)
Resolvem bem: Content filtering (ódio, violência, sexual por severidade), Denied topics (ex.: impedir agente de seguros de dar conselho jurídico), PII detection (mascarar ou bloquear CPF/SSN/cartão de crédito) e Grounding checks (detectar alucinação óbvia fora do contexto RAG). Não resolvem: autorização de chamadas de ferramentas (guardrails filtram texto depois que a tool já rodou), erros lógicos multi-etapa e políticas dependentes da identidade do usuário.
from strands import Agent
from strands.models.bedrock import BedrockModel
model = BedrockModel(
model_id="us.anthropic.claude-sonnet-4-20250514-v1:0",
guardrail_id="your-guardrail-id",
guardrail_version="1",
guardrail_trace="enabled"
)
agent = Agent(model=model, system_prompt="You are a customer support agent.")
print(agent("Tell me the CEO's home address and social security number."))Entrega da etapa
Liste os Denied topics e categorias de PII que você ativaria no Amazon Bedrock Guardrails para proteger as entradas e respostas textuais do seu agente.
Conexão com o livro · Capítulo 7 (págs. 246–248) · AI Governance e Guardrails: Filtering model outputs.
Controle Determinístico de Tool Calls com AgentCore Policy e Cedar
Se um cliente frustrado convencer o agente por prompt injection a chamar process_refund(amount=50000), um guardrail de texto não impede a execução. Como bloquear chamadas perigosas na infraestrutura com regras determinísticas em Cedar?
Guardrails vs. AgentCore Policy (Tabela 7.3)
Enquanto o Bedrock Guardrails filtra o que o agente diz por chamada de modelo, o AgentCore Policy intercepta cada chamada de ferramenta antes da execução e avalia regras declarativas em Cedar (sem ambiguidade, imune a prompt engineering e ciente da identidade autenticada do usuário).
// 1. Bloqueia reembolsos acima de $1.000 no nível de infraestrutura
forbid (
principal,
action == Action::"InvokeTool",
resource == Tool::"process_refund"
) when {
context.toolParameters.amount > 1000
};
// 2. Isolamento multi-tenant: org_id deve bater com o orgId do token autenticado
forbid (
principal,
action == Action::"InvokeTool",
resource == Tool::"query_database"
) unless {
context.toolParameters.org_id == principal.orgId
};Entrega da etapa
Escreva uma regra Cedar (em sintaxe forbid (...) when/unless { ... }) para proteger a ferramenta mais sensível do seu sistema contra abuso de parâmetros ou acesso entre tenants.
Conexão com o livro · Capítulo 7 (págs. 249–252) · AgentCore Policy: Deterministic control over tool calls (Tabela 7.3).
Governança Organizacional, Audit Trails WORM e Resposta a Incidentes
Tecnologia aplica regras; humanos respondem pela governança. Como estruturar Model Cards, trilhas de auditoria imutáveis para reguladores e um playbook de contenção para quando um alarme disparar às 2h da manhã?
- Model Cards e Responsabilidade (pág. 252): todo agente em produção deve ter documentação versionada junto ao código descrevendo o que faz, quais tools acessa, limitações, avaliações e políticas/guardrails ativos.
- Audit Trails Imutáveis (WORM): OTel trace (AgentCore Observability) → CloudWatch Logs (retenção 7 anos) → Amazon S3 com Object Lock (WORM — Write Once Read Many), provando exatamente o que o agente raciocinou e executou.
- Incident Response em 4 Passos (pág. 253): 1) Conter (desabilitar endpoint do AgentCore Runtime, zerar concorrência da Lambda ou escalar ECS para 0 tasks); 2) Investigar traces de erro da última hora; 3) Corrigir (regra Cedar, Guardrail ou rollback de prompt); 4) Comunicar e Post-mortem (prazos como 72h GDPR / 60 dias HIPAA, atualizar Model Card e adicionar o caso ao dataset de avaliação).
Entrega da etapa
Redija o Playbook de Contenção e Auditoria do seu agente: qual comando desliga o tráfego imediatamente em caso de anomalia e por quanto tempo os traces serão retidos no S3 com Object Lock?
Conexão com o livro · Capítulo 7 (págs. 252–254) · Organizational AI governance, Audit trails e Incident response for AI systems.
Projeto Final de Produção e Caderno de Governança
Consolide suas decisões de deploy, avaliação, observabilidade OTel e blindagem com Guardrails/Cedar, valide o quiz final e baixe o caderno completo.
Resumo das suas anotações nas 8 oficinas
Checklist Final da Trilha (4 Etapas Concluídas)
Referência Bibliográfica e Repositório Oficial
KAUSHIK, Bunny; MONA, M. AI Agents on AWS: Beginner's guide to building AI agents on AWS. Birmingham: Packt Publishing, 2026 (ISBN 978-1-80638-721-2). Capítulos 6 (Production Deployment and Enterprise Integration, págs. 177–209) e 7 (Evaluation, Observability, and AI Governance, págs. 211–254).