Blog

  • Como Implantar Modelos Quantizados no Amazon SageMaker AI com Unsloth

    Por que quantização importa na prática

    Manter modelos de linguagem em precisão total — 16 bits por parâmetro (BF16 ou FP16) — é caro. Instâncias grandes de GPU têm custo elevado, os ciclos de iteração ficam lentos e o armazenamento cresce rapidamente. A quantização resolve isso reduzindo a precisão numérica dos pesos do modelo: em vez de 16 bits por parâmetro, você passa a usar 4 ou 8 bits, encolhendo o consumo de memória de forma significativa.

    O problema clássico da quantização é a perda de qualidade. É aí que entra a quantização dinâmica, metodologia desenvolvida pela Unsloth Dynamic. Em vez de aplicar a mesma redução de bits em todas as camadas do modelo, a abordagem analisa camada por camada: as mais sensíveis à perda de precisão permanecem em maior resolução (por exemplo, 16 bits), enquanto as menos sensíveis são comprimidas de forma agressiva (4 bits ou menos). O resultado é um modelo muito menor com degradação de qualidade bem controlada.

    Para ter uma ideia prática: um modelo com 8 bilhões de parâmetros em BF16 ocupa cerca de 16 GB de memória. Com quantização para 4 bits, esse footprint cai para aproximadamente 5 GB — o que frequentemente significa a diferença entre precisar de uma instância multi-GPU e caber confortavelmente em uma GPU única.

    A Unsloth é a ferramenta que viabiliza esse fluxo de ponta a ponta: ajuste fino, quantização, exportação e implantação em um único workflow unificado.

    Qual formato de modelo usar

    Antes de escolher o serviço AWS, a AWS orienta a escolher o artefato de saída correto — a infraestrutura vem depois. O Unsloth suporta dois tipos principais de exportação voltados para implantação:

    • Arquivos GGUF — formato de arquivo único que empacota pesos, tokenizador e metadados juntos. É autocontido e pronto para ser carregado sem arquivos adicionais. Ideal para runtimes leves como llama.cpp, Ollama e Unsloth. No ambiente AWS, mapeia para Amazon EC2 ou container customizado no Amazon SageMaker AI.
    • Pesos safetensors mesclados — (16 bits, 8 bits, FP8, 4 bits, NVFP4) para engines de maior throughput como vLLM e SGLang. No AWS, mapeia para containers de Inferência de Modelos Grandes (LMI) do SageMaker AI, Amazon EKS ou Amazon ECS.

    A tabela abaixo, presente no artigo original, resume o mapeamento entre artefato, runtime e destino AWS:

    • GGUF + llama.cpp/Unsloth → Amazon EC2: validação rápida com acesso direto à instância
    • GGUF + container customizado → Amazon SageMaker AI: endpoints gerenciados com autoscaling e runtime leve
    • Pesos mesclados 16 bits ou 4 bits + vLLM/SGLang/LMI → Amazon SageMaker AI: alto throughput, batching, autoscaling, GPU em produção
    • Qualquer stack containerizado → Amazon EKS ou Amazon ECS: quando a inferência precisa se integrar a um framework de containers já existente

    Os quatro padrões de implantação

    Padrão 1: GGUF no Amazon EC2 com llama.cpp

    O ponto de partida recomendado é o Amazon EC2, pela transparência e controle máximo. Nele é possível comparar diferentes níveis de quantização, testar formatação de prompts, avaliar comportamento em CPU versus GPU e medir o consumo real de memória antes de se comprometer com um endpoint gerenciado.

    Uma exportação típica no Unsloth se parece com isso:

    model.save_pretrained_gguf("gguf_model", tokenizer, quantization_method="q4_k_xl")

    Para iniciar o servidor, o comando mínimo do llama-server é:

    llama-server \
      --model /models/my-model.gguf \
      --alias my-model \
      --ctx-size 8192 \
      --host 0.0.0.0 \
      --port 8080

    Ou usando o Unsloth diretamente:

    unsloth run \
      --model /models/my-model.gguf \
      --alias my-model \
      --ctx-size 8192 \
      --host 0.0.0.0 \
      --port 8080

    A partir daí, a aplicação se comunica com o modelo via interface compatível com OpenAI:

    from openai import OpenAI
    client = OpenAI(
        base_url="http://<ec2-private-ip>:8080/v1",
        api_key="not-required",
    )
    response = client.chat.completions.create(
        model="my-model",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Explain AWS Graviton in two sentences."},
        ],
        max_tokens=128,
    )
    print(response.choices[0].message.content)

    Atenção: essa configuração é adequada para testes isolados. Em produção, é necessário restringir o grupo de segurança a blocos de Roteamento entre Domínios sem Classe (CIDR) conhecidos, vincular a uma interface privada e colocar o endpoint atrás de um gateway de API autenticado ou balanceador de carga.

    Consulte a documentação GGUF do Unsloth para a lista completa de métodos de quantização e suas características.

    Padrão 2: GGUF no Amazon SageMaker AI com container customizado

    Quando é necessário um endpoint de produção com autoscaling, monitoramento, integração com Gerenciamento de Identidade e Acesso (IAM) e uma superfície de API estável, os endpoints de inferência do Amazon SageMaker AI são a escolha mais adequada.

    Para implantações GGUF, o design mais prático é um container de inferência customizado que empacota o arquivo GGUF junto com o llama.cpp. O container precisa escutar na porta 8080, implementar /ping para verificações de saúde e /invocations para requisições de inferência.

    O repositório GitHub de exemplo inclui uma demonstração completa desse padrão. Ele implanta uma comparação lado a lado entre o Qwen3-VL-8B-Instruct quantizado dinamicamente pelo Unsloth (GGUF Q4_K_XL servido com llama.cpp em ml.g5.xlarge, aproximadamente US$ 1,41/hora) e a variante BF16 em precisão total (servida com vLLM em ml.g5.12xlarge, aproximadamente US$ 7,09/hora). Preços referentes a junho de 2026; consulte a página de preços do Amazon SageMaker AI para valores atualizados.

    O script de entrada inicia o llama-server em uma porta interna e usa o nginx como proxy reverso para satisfazer a interface do SageMaker AI:

    # Start llama-server with the GGUF model and vision projector
    /app/llama-server \
      --model /models/Qwen3-VL-8B-Instruct-UD-Q4_K_XL.gguf \
      --mmproj /models/mmproj-F16.gguf \
      --host 0.0.0.0 \
      --port 8081 \
      --ctx-size 4096

    O nginx então mapeia /ping para o health check do llama-server e /invocations para o endpoint de chat completions:

    # SageMaker health check endpoint
    location /ping {
        proxy_pass http://llama_backend/health;
    }
    # SageMaker inference endpoint -> llama.cpp chat completions
    location /invocations {
        proxy_pass http://llama_backend/v1/chat/completions;
        proxy_read_timeout 120s;
    }

    A arquitetura típica funciona assim: o arquivo GGUF finalizado fica armazenado no Amazon Simple Storage Service (Amazon S3); ao iniciar, o container do SageMaker AI carrega o modelo de /opt/ml/model e expõe uma camada de API que traduz as requisições do SageMaker AI em chamadas de inferência locais.

    Padrão 3: Pesos mesclados no Amazon SageMaker AI com engines otimizadas para GPU

    GGUF é excelente quando o tamanho do arquivo e o runtime leve são as prioridades. Mas quando throughput e eficiência de GPU são o foco, os pesos mesclados se tornam mais atrativos.

    Pesos mesclados são o modelo salvo como um conjunto unificado de pesos em safetensors — frequentemente o resultado da combinação de um adaptador ajustado (como um adaptador de Adaptação de Baixo Rank, LoRA) com o modelo base. O Unsloth suporta exportações de saída mesclada em 16 bits e 4 bits, mais adequadas para runtimes como vLLM e SGLang, construídos para padrões de serving em GPU de produção: batching, alto throughput de tokens e escalonamento multi-GPU.

    Uma exportação representativa:

    model.save_pretrained_merged(
        "finetuned_model",
        tokenizer,
        save_method="merged_16bit",
    )

    O caminho de serving é simplesmente:

    vllm serve finetuned_model

    No AWS, os containers LMI disponíveis para o Amazon SageMaker AI são especialmente relevantes aqui. Para o endpoint de precisão total no exemplo de referência, o container LMI é configurado inteiramente por variáveis de ambiente no recurso Terraform:

    HF_MODEL_ID             = "Qwen/Qwen3-VL-8B-Instruct"
    OPTION_DTYPE            = "bf16"
    OPTION_ROLLING_BATCH    = "vllm"
    OPTION_TENSOR_PARALLEL_DEGREE = "4"
    OPTION_MAX_MODEL_LEN    = "4096"

    Nenhum container customizado é necessário. O container LMI baixa o modelo do Hugging Face na inicialização e o serve via vLLM com paralelismo tensorial em 4 GPUs A10G. O paralelismo tensorial divide o modelo entre múltiplas GPUs para que cada uma processe uma parte da computação em paralelo.

    A regra prática sugerida no artigo: use GGUF e llama.cpp quando quiser o caminho de implantação mais leve. Use pesos mesclados com vLLM, SGLang ou backend LMI quando throughput, batching, concorrência ou topologia de hardware se tornarem as restrições dominantes.

    Padrão 4: Amazon EKS ou Amazon ECS quando a inferência precisa se encaixar no ambiente existente

    Para equipes que já padronizaram em Kubernetes ou Amazon ECS, faz mais sentido empacotar o runtime do Unsloth nesse ambiente do que introduzir uma superfície de serving separada apenas para modelos. Esse padrão é especialmente útil quando a inferência precisa conviver com outros serviços de aplicação, quando já existe tooling robusto em torno do Amazon EKS ou Amazon ECS, ou quando deployment, rede, observabilidade e segurança já estão padronizados na camada de infraestrutura.

    Para equipes que precisam de infraestrutura de cluster gerenciada para treinamento e inferência em larga escala, o Amazon SageMaker HyperPod também vale ser avaliado, embora o artigo original foque em padrões de implantação apenas de inferência.

    Práticas operacionais que fazem diferença em produção

    Mantenha a formatação de prompts consistente de ponta a ponta

    Formatação inconsistente de prompts é uma das formas mais comuns de diagnosticar erroneamente um bom modelo como uma implantação ruim. Quando um modelo exportado se comporta pior fora do Unsloth, o problema geralmente não é o método de quantização — é uma incompatibilidade no template de chat, no tratamento do token de fim de sequência (EOS) ou na estrutura do prompt entre treino e inferência. Consulte a documentação de templates de chat do Unsloth para detalhes sobre configuração de template no momento da exportação.

    Avalie o formato completo de implantação, não apenas o nível de quantização

    Um benchmark de quantização isolado não é suficiente. O comportamento real depende do tamanho do contexto, concorrência, mix de requisições, comportamento de streaming, caminho de inicialização e o próprio runtime. O Amazon SageMaker AI também oferece recomendações de inferência que podem ajudar a identificar tipos de instância e configurações otimizadas.

    Use entrega estável de artefatos

    Após finalizar o modelo, promova-o por um caminho de armazenamento previsível. No AWS, isso geralmente significa armazenar o arquivo de modelo escolhido no Amazon S3 e carregá-lo a partir daí, em vez de depender de downloads em tempo de execução de fontes externas durante a inicialização.

    Monitore o serviço, não apenas o modelo

    Performance em produção não é só sobre qualidade dos tokens — é também sobre tempo de inicialização, latência de cauda, concorrência, comportamento de escalonamento e características de carregamento do modelo. Endpoints gerenciados tornam isso mais visível porque é possível acompanhar métricas de invocação e sinais de escalonamento diretamente pelo Amazon CloudWatch.

    Valide o contrato do container com antecedência

    Se estiver implantando no Amazon SageMaker AI com um container customizado, valide o container localmente antes de fazer o deploy. Certifique-se de que /ping e /invocations se comportam corretamente e que o runtime sobrevive a tamanhos de prompt realistas. Consulte o guia de containers customizados do Amazon SageMaker para a especificação completa da interface.

    Projete segurança e rede desde o início

    Serving de modelos frequentemente se torna parte de um ambiente de aplicação maior, o que significa que rede, escopo de papéis IAM, acesso à internet, criptografia com o Serviço de Gerenciamento de Chaves AWS (AWS KMS) e posicionamento na Nuvem Privada Virtual (VPC) importam tanto quanto a performance do runtime. Tome essas decisões desde o início. Habilite o AWS CloudTrail para registro de auditoria em nível de API. Consulte a documentação de segurança de infraestrutura do Amazon SageMaker para orientações sobre configuração de VPC e criptografia.

    Próximos passos

    Para ver esses padrões em ação, o artigo original recomenda clonar o repositório GitHub de exemplo e executar terraform apply para implantar tanto um endpoint GGUF quantizado quanto um endpoint vLLM de precisão total no Amazon SageMaker AI. O Terraform provisiona toda a infraestrutura e uma instância de Notebook do Amazon SageMaker com o repositório pré-clonado, permitindo executar o notebook de comparação imediatamente.

    O notebook envia prompts de imagem idênticos para ambos os endpoints, demonstrando inferência multimodal de visão-linguagem com o Qwen3-VL, e produz comparações lado a lado de qualidade de saída, latência, throughput e custo. Ele também inclui um framework de benchmarking que avalia ambos os modelos com métricas objetivas de qualidade (correspondência exata, BLEU, ROUGE-L), permitindo quantificar a degradação causada pela quantização em vez de depender de julgamento subjetivo.

    Para evitar cobranças contínuas ao terminar, basta executar terraform destroy para remover os recursos provisionados.

    Para aprofundamento, o artigo original indica:

    Fonte

    Deploying quantized models on Amazon SageMaker AI with Unsloth (https://aws.amazon.com/blogs/machine-learning/deploying-quantized-models-on-amazon-sagemaker-ai-with-unsloth/)

  • Camada Semântica para IA Agêntica na AWS com Stardog e Amazon Bedrock AgentCore

    O problema que a IA agêntica ainda não resolveu sozinha

    A promessa dos agentes de IA para análise de dados é clara: em vez de esperar na fila por um relatório, o usuário faz a pergunta e o agente busca a resposta diretamente nos sistemas da empresa. Mas há um obstáculo que os modelos de linguagem, por mais capazes que sejam, não conseguem superar sozinhos: os dados corporativos são fragmentados, inconsistentes e cheios de definições conflitantes.

    O “cliente” no sistema de CRM não é o mesmo registro que o “cliente” no sistema de faturamento. A “receita” calculada pelo time da América do Norte pode ser um número diferente do que o time europeu produziria. Um agente com acesso direto a esses dados fragmentados vai gerar respostas tecnicamente válidas, mas erradas ou contraditórias. A confiança no sistema se desfaz na primeira vez que dois agentes retornam números diferentes para a mesma pergunta.

    É exatamente esse gap que a AWS endereça em um post técnico recente, mostrando como construir uma camada semântica sobre Amazon Aurora e Amazon Redshift usando o Stardog, e como executar um agente baseado em Strands Agents no Amazon Bedrock AgentCore para consultar essa camada.

    RAG não é suficiente para análise de dados

    A abordagem mais conhecida para conectar modelos de linguagem a dados corporativos é a Geração Aumentada por Recuperação (RAG): documentos são indexados no Amazon Bedrock Knowledge Bases e trechos relevantes são injetados no contexto do modelo na hora da consulta. RAG funciona bem quando a resposta está em um texto que a busca consegue encontrar.

    O problema aparece nas perguntas analíticas: quando a resposta depende de cruzar registros ao vivo entre sistemas diferentes, aplicar uma regra de negócio de forma consistente e respeitar políticas de acesso por linha ou coluna. Nesses casos, o que está faltando não é texto — é contexto de negócio e definição de métricas.

    Uma camada semântica não substitui o RAG. Ela o complementa. A maioria dos sistemas em produção precisa dos dois, acessíveis pelo mesmo agente.

    O que é uma camada semântica baseada em grafo de conhecimento

    Uma camada semântica é uma visão orientada a ontologia dos dados corporativos. A ontologia captura os conceitos, relacionamentos, atributos e regras que importam para o negócio. Mapeamentos declaram como esses conceitos correspondem a linhas nas fontes de dados reais. O agente consulta a camada; a camada traduz cada consulta em SQL contra os sistemas subjacentes em tempo de execução. Os dados permanecem onde estão. O significado é capturado uma vez e reutilizado.

    Quando essa camada semântica é implementada como o Stardog faz — com uma ontologia, identificadores estáveis para cada entidade, regras que derivam novos fatos e restrições que validam os dados — o resultado é um grafo de conhecimento. Os dados são conectados como um grafo de entidades de negócio em vez de linhas em tabelas. Cada entidade recebe um identificador único no estilo URL chamado IRI, e as consultas percorrem essas conexões em uma linguagem padronizada pelo W3C chamada SPARQL.

    Dois conceitos são centrais na arquitetura descrita:

    • Grafo nomeado: um subconjunto rotulado do grafo, identificado por seu próprio IRI. O Stardog usa grafos nomeados como unidade de controle de acesso — a mesma consulta retorna resultados diferentes para papéis diferentes, dependendo de quais grafos cada papel pode ler.
    • Grafo virtual: um grafo nomeado cujo conteúdo não fica armazenado no Stardog. Ele vive em um sistema externo (Aurora, Redshift, Athena) e o Stardog busca as linhas sob demanda usando os mapeamentos.

    Para quem quiser se aprofundar, o glossário do Stardog define cada um desses termos, e a série de introdução ao Stardog coloca tudo em contexto.

    As três camadas que um agente confiável precisa

    O post descreve três camadas que precisam funcionar juntas para que um agente de IA entregue respostas confiáveis e com contexto de negócio:

    • Camada de modelo: um modelo de fundação capaz de planejar e escrever consultas. O Amazon Bedrock oferece acesso a múltiplas famílias de modelos via API única. No exemplo, é usado o Anthropic Claude Sonnet 4.6. O modelo conhece linguagem — não conhece o negócio da empresa.
    • Camada de significado: a camada semântica, que dá ao modelo acesso confiável e governado aos dados por trás das perguntas de negócio. A ontologia declara os conceitos e as regras que derivam novos fatos. A federação puxa linhas ao vivo de cada fonte na hora da consulta. É aqui que fica o Stardog federado sobre Aurora e Redshift.
    • Camada de runtime do agente: o ambiente que hospeda o agente, termina requisições de entrada, gerencia credenciais de ferramentas e fornece a superfície operacional para segurança e governança. O Amazon Bedrock AgentCore é usado neste exemplo por empacotar autenticação de entrada, hospedagem e credenciais de ferramentas em um único serviço gerenciado.

    Caso de uso: agente Customer 360 sobre Aurora e Redshift

    O exemplo escolhido é um agente de Customer 360 (C360) para uma equipe de analytics de varejo. O agente aceita perguntas em linguagem natural de analistas de vendas, marketing ou fraude, executa as consultas nos dados da empresa e responde com uma narrativa curta mais os números de suporte. O usuário não vê SQL nem SPARQL, e o agente não acessa dados que não está autorizado a ver.

    No cenário descrito, perfil de cliente, endereço, cartão de crédito e programa de recompensas ficam em um banco operacional no Amazon Aurora PostgreSQL. Pedidos, produtos, categorias e fornecedores ficam no Amazon Redshift para análise. Para responder “quem são nossos maiores compradores no Wisconsin?”, o agente precisa cruzar as duas fontes — e é exatamente isso que a camada semântica resolve.

    O kit de partida utilizado é o C360 Knowledge Kit do Stardog, adaptado para federar sobre Aurora PostgreSQL (lado do cliente) e Amazon Redshift (lado de compras). O kit inclui ontologia, dados de exemplo e consultas prontas.

    O que a camada semântica resolve nesse cenário

    Três problemas concretos são resolvidos pela camada semântica nesse exemplo:

    • Joins entre sistemas por significado compartilhado: a camada mapeia registros de clientes do Aurora e do Redshift para uma identidade comum usando chaves de negócio compartilhadas. O join é expresso pelo modelo semântico, não por um pipeline de integração física que precisaria ser mantido sincronizado.
    • Fatos derivados como regras, não como queries: uma definição como “grande comprador” vive na ontologia como regra, não precisa ser reescrita em cada consulta. Quando o critério muda, muda em um lugar só. Sem isso, a definição se duplica em dashboards, notebooks e relatórios, e começa a divergir.
    • Controle de acesso no nível do grafo: a segurança por grafo nomeado controla o acesso em nível de grafo, de modo que papéis diferentes veem subconjuntos diferentes do grafo de conhecimento. Para proteção mais granular, propriedades sensíveis como :ssn e :cardNumber podem ser marcadas como protegidas — usuários com permissão veem os valores reais; os demais recebem valores mascarados por padrão.

    Construindo a camada semântica: ontologia, mapeamentos e raciocínio

    A ontologia

    A ontologia C360 é criada no Stardog Designer, uma ferramenta visual de modelagem e mapeamento sem código. O modelador cria conceitos (:Customer, :Order, :Product), os conecta com relacionamentos e declara campos como :ssn e :cardNumber como propriedades sensíveis. Nenhum OWL ou RDF é escrito manualmente. O modelo C360 completo define aproximadamente dez classes e trinta propriedades.

    O Designer também pode gerar um modelo inicial a partir de metadados de fontes existentes — como esquemas de tabelas, definições FHIR ou perguntas de competência — o que é um caminho mais rápido do que escrever o modelo do zero.

    Uma vantagem de portabilidade do Designer é o uso do Turtle, a serialização padrão W3C para RDF (Framework de Descrição de Recursos) para persistir modelos. Isso evita aprisionamento tecnológico e suporta interoperabilidade: é possível importar ontologias de ferramentas como Protégé, exportar dados para serviços como Amazon Neptune e realizar fluxos de trabalho de ida e volta com outros utilitários compatíveis com RDF.

    O trecho central da ontologia que sustenta a federação é simples:

    :Customer a owl:Class .
    :purchasedBy a owl:ObjectProperty ;
      so:domainIncludes :Order ;
      so:rangeIncludes :Customer .
    :ssn a owl:DatatypeProperty, m:SensitiveProperty ;
      so:domainIncludes :Customer .

    A ontologia completa está disponível no C360 Knowledge Kit.

    Os mapeamentos: o bloco de construção da federação

    No Designer, os mapeamentos são criados visualmente. O modelador mapeia a tabela customer do Aurora para o conceito :Customer e indica que id é a chave da entidade. O mesmo processo é feito no lado do Redshift: mapeia a tabela purchase e marca cid como chave do cliente.

    A propriedade arquitetural fundamental é o template de IRI. Ambos os mapeamentos produzem o mesmo identificador para o mesmo cliente. Um cliente com cid=42 se torna urn:stardog:demos:c360:customer:42 independentemente de a linha ter vindo da tabela customer no Aurora ou da tabela purchase no Redshift. O agente vê uma entidade única. Os bancos permanecem inalterados. Nenhum SQL JOIN cruza os dois bancos — o “join” é o acordo de IRI.

    Quando o Designer salva um mapeamento, ele emite o Stardog Mapping Syntax (SMS), um superconjunto do padrão W3C R2RML que usa sintaxe similar ao SPARQL. Os dois trechos que carregam o bloco de construção da federação são:

    # Mapeamento Aurora (customer)
    BIND(TEMPLATE("urn:stardog:demos:c360:customer:{cid}") AS ?iri)
    
    # Mapeamento Redshift (order)
    BIND(TEMPLATE("urn:stardog:demos:c360:customer:{cid}") AS ?cust_iri)

    Os arquivos de mapeamento completos para todas as tabelas C360 estão no kit.

    Raciocínio sobre o grafo

    O Stardog suporta raciocínio OWL e regras definidas pelo usuário escritas em Stardog Rule Syntax (SRS) ou SWRL. Raciocínio é o processo de inferir novos fatos a partir de dados existentes usando o esquema.

    O kit define classes derivadas como Big_Spender (um cliente que fez pelo menos um pedido acima de um limite) e Large_Order. Com o raciocínio habilitado em tempo de consulta, perguntar “quantos grandes compradores há por estado?” funciona sem precisar pré-computar ou materializar esses fatos. As regras são definidas uma vez no modelo semântico e avaliadas sobre dados ao vivo quando a consulta é executada.

    Governança de acesso com segurança por grafo nomeado

    Dados de Customer 360 são regulados. Dois requisitos aparecem cedo: alguns usuários (RH, fraude) precisam ver informações de identificação pessoal (PII) como CPF e número completo de cartão; a maioria dos usuários (marketing, analytics) não pode. E o controle não deve exigir mudanças nos bancos subjacentes.

    O mecanismo do Stardog para isso é a segurança por grafo nomeado. No exemplo, o mapeamento do Aurora é dividido em dois grafos virtuais:

    • aurora_c360_safe: perfil do cliente sem PII (tudo exceto :ssn e :cardNumber).
    • aurora_c360_pii: apenas os triplos de PII, vinculados ao mesmo IRI de cliente.

    O mapeamento do Redshift é um único grafo: redshift_c360. Dois papéis são criados: hr_user com leitura nos três grafos virtuais, e marketing_user com leitura apenas em aurora_c360_safe e redshift_c360.

    Quando o marketing_user executa uma consulta SPARQL pedindo ?c :ssn ?ssn, o planejador do Stardog trata aurora_c360_pii como se não existisse para aquele usuário. O pushdown JDBC para a coluna SSN simplesmente não acontece. Mesma consulta SPARQL, dois papéis, dois conjuntos de resultados diferentes — sem filtro no nível da aplicação, sem mudança no banco, sem risco de vazamento por uma ferramenta de BI mal configurada.

    Para casos em que campos sensíveis estão espalhados por muitas entidades, o Stardog também suporta marcar propriedades individuais como sensíveis na ontologia, com a marcação acionando mascaramento em nível de coluna em tempo de consulta. Veja a documentação de segurança granular do Stardog para os passos de configuração.

    Executando o agente e os dois caminhos de integração com o Stardog

    O agente é construído com o Strands Agents: um script Python curto conecta o Claude Sonnet 4.6 (no Amazon Bedrock) a uma ferramenta que executa SPARQL contra o Stardog. Um resumo da ontologia é carregado no prompt de sistema do agente. O modelo escreve SPARQL, a ferramenta retorna linhas, o modelo resume os resultados.

    Para produção, a recomendação é implantar no Amazon Bedrock AgentCore, que empacota o scaffolding operacional em um serviço gerenciado: o AgentCore Runtime hospeda o agente e gerencia concorrência e estado de sessão; o AgentCore Gateway é a superfície de entrada que valida o Token Web JSON (JWT) do provedor de identidade e roteia a chamada para o Runtime; o AgentCore Identity mantém o token do Stardog como provedor de credencial, de modo que a credencial não fica no código do agente.

    Dois caminhos de integração são descritos:

    • Caminho A — ferramenta SPARQL direta: uma pequena ferramenta Python envolve o cliente pystardog e é exposta ao agente via decorator de ferramenta do Strands. O agente escreve SPARQL, a ferramenta executa, a ferramenta retorna linhas. Funciona em instâncias Stardog acessíveis via HTTPS, incluindo o nível gratuito do Stardog Cloud. Este foi o caminho usado no POC porque não exige habilitação especial na conta Stardog.
    • Caminho B — servidor MCP do Stardog Cloud como alvo de ferramenta no Gateway: o Stardog publica um servidor MCP oficial, stardog-union/stardog-cloud-mcp, que expõe o Voicebox (camada de consulta em linguagem natural do Stardog) como três ferramentas: voicebox_ask, voicebox_generate_query e voicebox_settings. O AgentCore Gateway pode registrar esse servidor MCP como alvo de ferramenta, o que significa que o agente dentro do Runtime enxerga o Voicebox como uma ferramenta sem código de cola, e o AgentCore Identity injeta o token no salto do Gateway. O modo local do servidor MCP é estável; o modo remoto está em beta. O Caminho B também exige um token de API do Voicebox, que é restrito a contas específicas.

    A recomendação é usar o Caminho A quando não há acesso à API ou quando se quer controle total sobre a geração de SPARQL. Usar o Caminho B quando há acesso à API e se quer a cadeia de raciocínio e proveniência do Voicebox.

    Para implantações em produção, também é recomendado habilitar o cache de prompts do Amazon Bedrock. O agente reutiliza o mesmo prompt de sistema extenso — o resumo da ontologia C360 — em cada chamada. O cache de prompts mantém essa porção aquecida entre chamadas, reduzindo o custo de tokens de entrada em invocações repetidas.

    Consultas de verificação e extensibilidade

    Para confirmar que a federação funcionou como projetado, três categorias de perguntas foram executadas contra a implantação ao vivo:

    • Somente Aurora: “Liste dez clientes e seus estados.” O Stardog emite uma consulta SQL contra as tabelas do Aurora e retorna as linhas. O grafo virtual do Redshift não é tocado.
    • Somente Redshift: “Top dez produtos por unidades vendidas.” O Stardog emite uma agregação contra a tabela de compras do Redshift. O Aurora não é tocado.
    • Federado: “Top dez maiores compradores, com seus estados.” Essa consulta precisa cruzar clientes do Aurora com pedidos do Redshift pelo IRI compartilhado de cliente. O Stardog emite uma consulta SQL para cada fonte, recebe os dois conjuntos de resultados e os une pela variável ?cust — o IRI mapeado a partir do cid em cada lado.

    O caso de raciocínio também foi verificado: “quantos grandes compradores há por estado?” com raciocínio habilitado. O Stardog aplicou a regra Big_Spender sobre o grafo federado em tempo de consulta e retornou contagens por estado sem pré-computar ou materializar a classe derivada.

    Para governança, a mesma consulta SPARQL foi executada duas vezes — uma como hr_user e outra como marketing_user. O papel de RH viu o valor do SSN vinculado. O papel de marketing recebeu a mesma estrutura de linha com o binding ?ssn vazio, sem mudança no texto da consulta e sem filtro no lado do banco.

    Extensibilidade: além do Aurora e Redshift

    O mecanismo de grafo virtual do Stardog não é específico para Aurora ou Redshift. Para adicionar uma nova fonte, o modelador trabalha no Stardog Designer e gera o mapeamento SMS. Enquanto os novos mapeamentos produzirem IRIs que correspondam aos existentes para a mesma entidade lógica, a nova fonte passa a participar do grafo federado sem alterar a ontologia ou as consultas existentes.

    Na AWS, isso inclui Amazon Athena (data lake no Amazon S3) e engines do Amazon RDS que fornecem driver JDBC. Fora da AWS, inclui Snowflake, Google BigQuery, MongoDB e SAP HANA. A lista completa está na página de fontes de dados suportadas pelo Stardog.

    Quanto à implantação do próprio Stardog, há dois formatos: Stardog Cloud (SaaS), operado pela Stardog com SLAs de 99,9% e conformidade SOC 2, indicado para quem quer pular a operação; e autogerenciado no Amazon EKS, com imagens de container e Helm charts fornecidos pelo Stardog, indicado para quem precisa manter o tráfego do plano de dados dentro da VPC ou controlar o ciclo de atualizações. Em ambos os casos, os grupos de segurança das fontes de dados precisam permitir conexões de entrada a partir do intervalo de IPs de saída do Stardog Cloud. A documentação de allowlist de chamadas de grafo virtual do Stardog Cloud traz os valores atuais e os passos de configuração.

    Por onde começar

    A maioria das equipes que consegue colocar essa arquitetura em produção começa com um único fluxo de trabalho, não com uma implantação ampla. A sequência prática sugerida é:

    • Escolher um fluxo de trabalho que hoje é respondido lentamente porque os dados estão em dois ou três sistemas. Quanto mais estreito, melhor.
    • Escrever de três a cinco perguntas de competência que o fluxo precisa responder. Essas são as consultas que a camada semântica precisa suportar no primeiro dia.
    • Inicializar a ontologia a partir dos esquemas de fonte no Designer e refiná-la contra as perguntas de competência até que cada uma retorne uma resposta coerente.
    • Configurar a federação como grafos virtuais sobre as fontes ao vivo. Sem ETL, sem terceira cópia dos dados.
    • Conectar o agente à camada pelo Caminho A ou B, dependendo do acesso à API do Voicebox.

    O Stardog C360 Knowledge Kit é um ponto de partida útil — é o mesmo kit adaptado no post original.

    Fonte

    Build a semantic layer for agentic AI on AWS with Stardog and Amazon Bedrock AgentCore (https://aws.amazon.com/blogs/machine-learning/build-a-semantic-layer-for-agentic-ai-on-aws-with-stardog-and-amazon-bedrock-agentcore/)

  • Amazon SageMaker HyperPod passa a suportar configuração de ciclo de vida de nós baseada em AMI para clusters Slurm com provisionamento contínuo

    O que foi anunciado

    A AWS anunciou que o Amazon SageMaker HyperPod passou a suportar configuração baseada em AMI (Amazon Machine Image — Imagem de Máquina da Amazon) para clusters Slurm que utilizam provisionamento contínuo. Essa novidade estende uma capacidade já existente para um modo de operação importante: o provisionamento contínuo, que adiciona nós ao cluster conforme a capacidade vai ficando disponível.

    O que muda na prática

    Com esse suporte, clusters que usam provisionamento contínuo agora podem ser criados sem a necessidade de baixar, configurar ou fazer upload de scripts de configuração de ciclo de vida para o Amazon S3. Isso simplifica bastante o processo de setup.

    A configuração baseada em AMI provisiona os nós com o software e as configurações necessárias para um ambiente pronto para produção, voltado à execução de workloads de treinamento de IA/ML. Isso inclui softwares como Docker, Enroot e Pyxis, além de configurações como contabilidade do Slurm, geração de chaves SSH e rotação de logs.

    No modo de provisionamento contínuo, cada nó é configurado a partir da AMI à medida que é adicionado ao cluster — sem necessidade de gerenciar scripts de ciclo de vida. O resultado é que os nós ficam disponíveis para agendamento de jobs mais rapidamente.

    Como habilitar a configuração baseada em AMI

    Para ativar esse recurso, basta omitir o bloco LifeCycleConfig na configuração do grupo de instâncias ao criar clusters via API. Quem preferir usar o console do SageMaker AI, deve selecionar a opção “None” em Lifecycle scripts dentro de Custom setup.

    Customizações adicionais ainda são possíveis

    Para quem precisar de personalizações além da linha de base oferecida pela AMI, é possível fornecer um script de extensão. Isso é feito especificando o parâmetro OnInitComplete e o SourceS3Uri no bloco LifeCycleConfig via API — ou informando o URI do S3 no campo “Extension script file in S3” no console.

    Vale destacar que os scripts de ciclo de vida personalizados continuam totalmente suportados para casos de uso que exigem controle total sobre o provisionamento.

    Disponibilidade

    A configuração de ciclo de vida de nós baseada em AMI para clusters Slurm com provisionamento contínuo está disponível em todas as regiões da AWS onde o SageMaker HyperPod está disponível.

    Para começar, a AWS disponibiliza documentação tanto para quem prefere usar a linha de comando quanto o console:

    Fonte

    Amazon SageMaker HyperPod now supports AMI-based node lifecycle configuration for Slurm clusters using continuous provisioning (https://aws.amazon.com/about-aws/whats-new/2025/06/ami-configuration-continuous-slurm/)

  • Instâncias Amazon EC2 G7 já estão disponíveis na Região US East (Norte da Virgínia)

    Novidade: EC2 G7 chega à região US East (Norte da Virgínia)

    A AWS anunciou que as instâncias Amazon Elastic Compute Cloud (Amazon EC2) G7 estão agora disponíveis na região US East (Norte da Virgínia). Movidas por GPUs NVIDIA RTX PRO 4500 Blackwell Server Edition, essas instâncias representam um salto significativo de desempenho em relação à geração anterior.

    Ganhos de desempenho em relação às G6

    Comparadas às instâncias G6, as G7 entregam:

    • Até 4,6x mais desempenho em inferência de IA
    • Até 2,1x mais desempenho gráfico
    • Performance superior também em cargas de trabalho de análise de dados acelerada por GPU

    Para quais cargas de trabalho as G7 são indicadas?

    As instâncias EC2 G7 foram projetadas para atender a uma ampla variedade de casos de uso exigentes. Entre os principais, a AWS destaca:

    • Inferência de modelos de IA: tradução de idiomas, análise de vídeo e imagem, e reconhecimento de fala
    • Cargas gráficas: criação e renderização de gráficos em tempo real com qualidade cinematográfica, e streaming de jogos
    • Transcodificação de vídeo e computação espacial
    • Análise de dados: sistemas de recomendação, inferência com Geração Aumentada por Recuperação (RAG) e pipelines de dados em tempo real

    Especificações técnicas

    Em termos de hardware, as instâncias G7 contam com uma configuração robusta:

    • Até 8 GPUs NVIDIA RTX PRO 4500 Blackwell Server Edition, com 32 GB de memória por GPU
    • Processadores Intel Xeon 6 customizados
    • Suporte a até 192 vCPUs (CPUs virtuais)
    • Até 700 Gbps de largura de banda de rede via Elastic Fabric Adapter (EFA)
    • Até 768 GiB de memória do sistema
    • Até 7,6 TB de armazenamento local NVMe SSD

    Disponibilidade e formas de aquisição

    As instâncias EC2 G7 já estão disponíveis em três regiões da AWS:

    • US East (Norte da Virgínia e Ohio)
    • US West (Oregon)

    É possível adquiri-las como Instâncias On-Demand, Instâncias Spot ou como parte dos Savings Plans. Para começar, acesse o Console de Gerenciamento da AWS ou a Interface de Linha de Comando da AWS (CLI). Para saber mais sobre as especificações e casos de uso, consulte a página oficial das instâncias G7.

    Fonte

    Amazon EC2 G7 instances are now available in the AWS US East (N. Virginia) Region (https://aws.amazon.com/about-aws/whats-new/2026/07/amazon-ec2-g7-available-North-Virginia)

  • Amazon EMR no EKS agora suporta agente de diagnóstico do Apache Spark

    Diagnóstico inteligente para jobs Spark com linguagem natural

    A AWS anunciou que o Amazon EMR no EKS passa a contar com suporte ao agente de diagnóstico do Apache Spark. Com essa novidade, engenheiros de dados conseguem investigar falhas em jobs do EMR on EKS usando linguagem natural — sem precisar navegar manualmente por logs distribuídos ou pela interface do Spark History Server.

    O que o agente é capaz de fazer

    O agente analisa três fontes principais de informação para identificar a raiz dos problemas:

    • Dados do Spark History Server
    • Logs distribuídos dos executores
    • Configurações do cluster

    A partir dessa análise, ele consegue identificar problemas como erros de memória, distorção de dados (data skew), contenção de recursos e falhas de conectividade. Além de apontar a causa raiz, o agente também entrega recomendações de código PySpark para ajudar na correção.

    Cobertura completa das opções de implantação do EMR

    Com esse lançamento, o agente de diagnóstico do Spark passa a cobrir todas as modalidades de implantação do Amazon EMR:

    • EMR on EC2
    • EMR Serverless
    • EMR on EKS

    Ou seja, independentemente de como o ambiente EMR está configurado, o agente já está disponível para uso.

    Como acessar o agente

    O acesso pode ser feito de duas formas:

    • Pelo console do EMR on EKS: em jobs com falha, basta acionar a opção “Troubleshoot with AI” diretamente na interface.
    • Via MCP (Protocolo de Contexto de Modelo): o agente também está disponível por meio do MCP, podendo ser integrado a qualquer agente de codificação compatível, incluindo Kiro, Claude Code e Cursor.

    Segurança e auditoria

    Todas as operações realizadas pelo agente são somente leitura, autenticadas via funções do IAM (Gerenciamento de Identidade e Acesso) e registradas no AWS CloudTrail. Isso garante rastreabilidade completa e alinhamento com práticas de segurança já estabelecidas nos ambientes AWS.

    Disponibilidade

    O agente de diagnóstico do Spark para o Amazon EMR on EKS está disponível em todas as regiões AWS onde o SageMaker Unified Studio estiver presente. Para começar, basta acessar o console do EMR on EKS ou configurar o servidor MCP no agente de codificação de sua preferência. Para orientações detalhadas, consulte a documentação do agente de diagnóstico do EMR.

    Fonte

    Amazon EMR on EKS now supports Apache Spark troubleshooting agent (https://aws.amazon.com/about-aws/whats-new/2026/07/amazon-emr-eks-spark-troubleshooting/)

  • Design de ferramentas MCP: abordagens práticas e seus trade-offs

    O problema não é o MCP — é o design da ferramenta

    Muitas equipes começam expondo uma API existente diretamente como uma ferramenta Protocolo de Contexto de Modelo (MCP) e esperam que o agente resolva o resto. Para casos simples, isso até funciona. Mas na maioria das situações, não funciona. O motivo é direto: você precisa projetar suas ferramentas pensando em como os Modelos de Linguagem de Grande Escala (LLMs) e sistemas agênticos realmente operam.

    Sem esse cuidado, o resultado é chamadas de ferramenta falhando, parâmetros errados sendo passados e retentativas que consomem contexto e degradam a performance. A AWS publicou um post técnico detalhado sobre esse tema, explorando onde o design de ferramentas MCP costuma falhar e como corrigi-lo com abordagens práticas de engenharia de contexto.

    Os dois vilões: inchaço e confusão

    Dois problemas estão por trás da maioria das falhas em ferramentas MCP.

    O primeiro é o inchaço. Definições de ferramentas são carregadas no contexto do LLM a cada chamada, mesmo que a ferramenta não seja usada. Quando múltiplos servidores MCP estão conectados, o contexto pode ser consumido significativamente antes que o usuário tenha feito sequer uma pergunta. À medida que o contexto enche, a capacidade do modelo de raciocinar pode se degradar, tornando a sessão menos produtiva.

    O segundo é a confusão. Com o raciocínio degradado, o LLM passa a fazer escolhas piores: chama a ferramenta errada, usa parâmetros incorretos. As retentativas pioram ainda mais o inchaço. Similaridade semântica entre ferramentas, excesso de opções e nomes ambíguos também contribuem para a confusão.

    A solução instintiva — enriquecer as descrições das ferramentas com definições mais claras, mapeamentos de linguagem natural e exemplos de uso — ajuda com a confusão, mas agrava o inchaço. É um ciclo vicioso. Resolver esse equilíbrio é, fundamentalmente, um problema de engenharia de contexto: moldar o que o LLM vê e quando ele vê, para que o modelo produza resultados melhores.

    Seis abordagens na prática

    Para tornar os conceitos concretos, a AWS construiu seis versões de um servidor MCP que expõe uma API simulada de busca de conteúdo educacional K-12 (ensino básico americano). Cada versão aplica uma abordagem diferente sobre o mesmo backend. Os exemplos podem ser executados localmente usando o Kiro CLI. O repositório de código de exemplo está disponível no GitHub.

    V1: Passagem direta (anti-padrão de referência)

    A primeira versão é o anti-padrão clássico: expõe a API do backend diretamente, com 14 parâmetros usando nomes internos como discipline, media_type e content_bucket, e apenas uma linha de documentação genérica. O LLM não tem orientação sobre quais valores são válidos. Pode tentar passar “quiz” para media_type quando o valor válido é “Assessment”, ou “math” quando o campo espera “Math”. Cada escolha errada dispara uma retentativa que consome mais contexto. O baixo custo inicial é enganoso, pois a confusão eleva o custo real por meio de tentativas repetidas.

    V2: Descrições enriquecidas

    Mesma estrutura da V1, sem refatoração do backend. A documentação agora lista valores válidos e mapeamentos de sinônimos para cada campo — por exemplo, media_type indica que “‘quiz’/’test’ → Assessment, ‘worksheet’ → Activity”. Três parâmetros raramente usados são removidos e as mensagens de erro passam a orientar a próxima tentativa em vez de retornar apenas resultado vazio.

    A precisão melhora imediatamente porque o LLM vê os valores válidos. A definição da ferramenta fica visivelmente maior — esse é o trade-off do inchaço. Cada chamada paga esse custo, independentemente de a ferramenta ser usada. Porém, menos retentativas frequentemente tornam o custo total menor do que na V1. Segundo pesquisa da Anthropic, adotar uma abordagem sob demanda para saídas detalhadas pode reduzir os tokens de resposta em cerca de dois terços.

    Imagem original — fonte: Aws

    V3: Schema e valores padrão

    Esta versão renomeia parâmetros para refletir como o LLM pensa no domínio, não como o banco de dados nomeia suas colunas. discipline vira subject; content_bucket vira resource_class. Campos com valores finitos usam o tipo Literal, listando as opções diretamente no schema. Valores padrão sensatos cobrem o caso mais comum: structure='Asset', resource_class='Student Resource', language='en'. Uma ferramenta separada get_resource_detail cuida dos detalhes sob demanda.

    Os enums previnem valores errados no nível do protocolo. Os padrões fazem com que o LLM só precise especificar o que varia. A definição fica menor do que na V2, porque nomes e enums fazem o trabalho que antes exigia descrições verbosas. O AWS Prescriptive Guidance para Estratégias MCP recomenda manter a contagem de parâmetros de ferramentas em torno de oito ou menos.

    V4: Carregamento preguiçoso (lazy loading)

    Em vez de embutir enums e descrições detalhadas na ferramenta de busca, esta abordagem move essas informações para uma ferramenta separada. A ferramenta de busca mantém apenas dicas curtas. Uma ferramenta get_taxonomy recebe uma lista de nomes de campos e retorna valores válidos e mapeamentos de linguagem natural apenas para os campos relevantes à consulta atual.

    Para consultas ambíguas, o LLM chama get_taxonomy antes de buscar, para confirmar os valores válidos. Para consultas diretas onde as dicas são suficientes, pode pular essa chamada e buscar diretamente. O Amazon Bedrock AgentCore Gateway aplica esses conceitos em escala. A Anthropic reporta redução de até 85% nos tokens ao carregar definições de ferramentas apenas quando relevantes.

    Imagem original — fonte: Aws

    As Skills são outro exemplo de carregamento preguiçoso, mas implementado do lado do cliente. Esses arquivos locais contêm contexto útil para a ferramenta, mas são lidos no contexto apenas quando relevantes. A economia neste exemplo é modesta, mas em ambientes com muitas ferramentas conectadas e schemas complexos, o ganho se acumula rapidamente.

    V5: Introspecção via LLM no servidor

    Engenharia de contexto se torna desafiadora quando você não controla qual modelo vai interpretar suas instruções. Uma descrição ajustada para um modelo pode confundir outro. Testar todos os modelos possíveis é inviável.

    Esta versão adiciona uma ferramenta introspect respaldada pelo Amazon Nova 2 Lite no Amazon Bedrock. A ferramenta introspect_query recebe a pergunta em linguagem natural do usuário e retorna filtros recomendados com justificativa para cada escolha. Por exemplo, interpreta “conteúdo alinhado ao TEKS para crianças trabalhando divisão no ensino médio” e retorna filtros recomendados: subject “Math”, grades 6-8, state_standard “TX-TEKS”, topic “dividing,division”.

    Como a introspecção roda em um modelo de sua escolha, engenharia de prompt e testes se tornam confiáveis. A interpretação acontece no servidor, mantendo o contexto do cliente enxuto. O trade-off é custo: você paga pela chamada ao servidor, mas os resultados ficam consistentes independentemente de qual modelo o cliente usa.

    V6: Agente como ferramenta

    Quando você precisa de precisão e controle total, o próximo passo lógico é sustentar seu servidor MCP inteiro com um agente próprio. Esta versão expõe uma única ferramenta MCP respaldada por um agente Strands Agents com seu próprio system prompt e ferramentas internas. A interface externa é uma ferramenta com um único parâmetro: agentic_search_content(question: str).

    O agente cuida internamente de busca de taxonomia, pesquisa, recuperação de detalhes e formatação de resposta — usando suas próprias ferramentas que o LLM cliente não vê. O comportamento é consistente independentemente de qual cliente se conecta, porque seu agente é dono do raciocínio. O histórico de conversa persiste entre chamadas, então perguntas de acompanhamento funcionam naturalmente. O trade-off é custo e latência em troca de controle direto sobre o comportamento.

    Comparativo de trade-offs

    Cada versão troca um custo por outro. O post original resume assim:

    • V2 – Descrições enriquecidas: precisão aumenta, mas a definição da ferramenta fica maior
    • V3 – Schema e padrões: precisão aumenta e a definição fica menor
    • V4 – Reestruturação com lazy loading: contexto base mais enxuto, mas com uma viagem extra de ida e volta
    • V5 – Introspecção no servidor: lida bem com ambiguidade, mas você paga pela inferência
    • V6 – Agente como ferramenta: controle direto total, maior custo de infraestrutura

    Nenhuma versão vence em todas as dimensões. A escolha certa depende da quantidade de campos, da estabilidade do vocabulário, do orçamento de latência e de quanto você precisa de comportamento consistente entre diferentes clientes.

    Para ir mais fundo

    O protocolo MCP continua evoluindo. O Roadmap MCP 2026 aborda escalabilidade de transporte, comunicação entre agentes e funcionalidades para implantação empresarial. Para aprofundamento, a AWS indica os seguintes recursos:

    • Estratégias MCP na AWS — cobre a arquitetura mais ampla: quais padrões MCP usar, quando conectar múltiplos servidores e como estruturar seu sistema MCP além de uma única ferramenta.
    • AWS MCP Server — servidor MCP gerenciado que dá a agentes de codificação IA acesso a APIs da AWS, busca de documentação e skills de agente curadas por uma única conexão.
    • Strands Agents SDK — para aprofundar na abordagem agêntica da V6, com agentes multi-turno, orquestração de ferramentas e comportamento testável.
    • Amazon Bedrock AgentCore — implante seu servidor MCP sem gerenciar infraestrutura, com hospedagem em runtime, gateway para descoberta de ferramentas multi-servidor e memória persistente entre sessões.
    • Servidores MCP Open Source para AWS — 56 servidores MCP de código aberto cobrindo documentação, infraestrutura, IA/ML, dados, ferramentas de desenvolvedor e mais.
    • Amazon Bedrock AgentCore Samples — guias de início rápido, demos de funcionalidades, exemplos de casos de uso, blueprints e workshops para o AgentCore.
    • Servidores MCP Serverless de Exemplo — implementações de referência para hospedar servidores MCP no AWS Lambda e no Amazon Elastic Container Service (Amazon ECS).

    Fonte

    MCP tool design: Practical approaches and tradeoffs (https://aws.amazon.com/blogs/machine-learning/mcp-tool-design-practical-approaches-and-tradeoffs/)

  • Novas capacidades do Amazon SageMaker HyperPod para inferência empresarial: captura de dados, Hugging Face, NVMe e Route 53

    Inferência empresarial no SageMaker HyperPod: o que mudou

    À medida que as organizações escalam suas cargas de trabalho de IA generativa, cresce também a demanda por infraestrutura de inferência mais rápida, observável e flexível. A AWS respondeu a esse desafio com um conjunto de novas capacidades no Amazon SageMaker HyperPod, voltadas para simplificar como equipes implantam e operam modelos de grande porte em produção.

    As novidades cobrem cinco frentes: captura de dados em múltiplos níveis da cadeia de inferência, deploy direto a partir do Hugging Face Hub, carregamento de pesos via armazenamento NVMe local, gerenciamento automatizado de registros DNS com o Amazon Route 53 e controle granular de permissões por pod via contas de serviço personalizadas.

    Imagem original — fonte: AWS

    Captura de dados de inferência em múltiplas camadas

    O recurso de captura de dados do HyperPod permite registrar as requisições e respostas de inferência para fins de monitoramento, depuração e melhoria de modelos. O fluxo de uma requisição passa pelo endpoint do SageMaker AI, depois pelo Balanceador de Carga de Aplicação (ALB) e, por fim, chega ao pod do modelo. Cada camada pode ser configurada de forma independente, oferecendo flexibilidade para escolher o nível de visibilidade adequado para cada caso de uso.

    Pré-requisitos

    Para habilitar a captura de dados, é necessário ter um bucket do Amazon S3 (com URI no formato s3://amzn-s3-demo-bucket ou s3://amzn-s3-demo-bucket/prefix) e as permissões de Gerenciamento de Identidade e Acesso (IAM) corretas para que o operador possa gravar nele. Caso nenhum URI seja informado, o sistema utiliza o bucket do certificado TLS como destino padrão. A AWS também recomenda o uso de uma chave do Serviço de Gerenciamento de Chaves (AWS KMS) para criptografar os dados capturados.

    As três camadas de captura

    A captura de dados suporta três camadas, cada uma registrando em um ponto diferente do fluxo:

    • Camada 1 – Endpoint do SageMaker AI ({s3Uri}/{hash}/sme/): captura os payloads completos de entrada e saída na fronteira da API do SageMaker AI Runtime. Indicada para compatibilidade com o SageMaker AI Model Monitor.
    • Camada 2 – Balanceador de Carga de Aplicação (ALB) ({s3Uri}/{hash}/alb/): ativa os logs de acesso do ALB, que registram metadados como IPs de clientes, caminhos de requisição e latências.
    • Camada 3 – Pod do modelo ({s3Uri}/{hash}/pod/): captura os payloads completos diretamente no contêiner de inferência, com amostragem, buffer e limites de tamanho configuráveis. Funciona sem registro de endpoint do SageMaker AI — ideal para quem precisa da visibilidade mais próxima possível do modelo.

    Configurando a captura de dados

    A captura é habilitada adicionando uma seção dataCapture ao recurso personalizado de definição (CRD) InferenceEndpointConfig ou JumpStartModel. O exemplo abaixo mostra a estrutura completa com as três camadas ativas:

    dataCapture:
      s3Uri: s3://amzn-s3-demo-bucket/captures/ # Optional. Defaults to TLS bucket.
      sagemakerEndpoint:
        enabled: true
        initialSamplingPercentage: 100
        kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id
        captureOptions:
          - captureMode: Input
          - captureMode: Output
        captureContentTypeHeader:
          jsonContentTypes:
            - application/json
      loadBalancer:
        enabled: true
      modelPod:
        enabled: true
        initialSamplingPercentage: 100
        kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id
        captureOptions:
          - captureMode: Input
          - captureMode: Output
        bufferConfig:
          batchSize: 100
          flushIntervalSeconds: 60
        payloadConfig:
          maxPayloadSizeKB: 1024

    Permissões IAM necessárias

    Para habilitar a captura em clusters existentes, é preciso adicionar a seguinte permissão ao papel de execução do Operador de Inferência:

    {
      "Sid": "DataCaptureS3Access",
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }

    Se for utilizada uma chave KMS gerenciada pelo cliente, adicione também:

    {
      "Sid": "DataCaptureKmsAccess",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:*:*:key/*",
      "Condition": {
        "StringLike": {
          "kms:ViaService": "s3.*.amazonaws.com",
          "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::hyperpod-tls*"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }

    Para mais detalhes, consulte a documentação de captura de dados para inferência no HyperPod.

    Deploy direto a partir do Hugging Face Hub

    O HyperPod agora permite implantar modelos diretamente do Hugging Face Hub, sem a necessidade de pré-carregar os pesos no Amazon S3 ou no Amazon FSx. Essa integração suporta modelos restritos (gated) via tokenSecretRef, fixação de revisões via commitSHA e isolamento de tokens. É compatível com os runtimes vLLM, TGI e SGLang. Consulte como fazer deploy de modelos a partir do S3, FSx ou Hugging Face Hub com kubectl para mais detalhes.

    Passos para implantar um modelo do Hugging Face

    Primeiro, crie um Kubernetes Secret com o token da API do Hugging Face. Esse token é obrigatório para modelos restritos e recomendado para todos os downloads. Você pode gerar um token em huggingface.co/settings/tokens.

    kubectl create secret generic hf-token-secret --from-literal=token=hf_YOUR_TOKEN_HERE \
      -n $CLUSTER_NAMESPACE

    Em seguida, defina o nome do endpoint do SageMaker:

    export SAGEMAKER_ENDPOINT_NAME="mistral7b-hf"

    Monte o YAML de deploy. Para o YAML completo, consulte a seção Hugging Face em Deploy models from Amazon S3, Amazon FSx, or Hugging Face Hub using kubectl:

    modelName: mistral-7b
    modelSourceConfig:
      modelSourceType: huggingface
      prefetchEnabled: true
      huggingFaceModel:
        modelId: "mistralai/Mistral-7B-Instruct-v0.3"
        tokenSecretRef:
          name: hf-token-secret
          key: token
    instanceType: "ml.g5.24xlarge"

    Aplique o arquivo com o kubectl:

    kubectl apply -f deploy_hf_inference.yaml

    Verifique o status do deploy e do endpoint criado:

    kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
    kubectl describe SageMakerEndpointRegistration $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE

    Para depurar erros, verifique os eventos do Kubernetes:

    kubectl get events -n $CLUSTER_NAMESPACE

    Para testar o endpoint implantado:

    aws sagemaker-runtime invoke-endpoint \
      --endpoint-name $SAGEMAKER_ENDPOINT_NAME \
      --content-type "application/json" \
      --body '{"inputs": "What is AWS SageMaker?"}' \
      --region $REGION \
      --cli-binary-format raw-in-base64-out \
      /dev/stdout

    Gerenciamento de DNS com o Route 53

    O SageMaker HyperPod agora se integra ao Amazon Route 53 para criar e gerenciar automaticamente registros DNS para os endpoints de inferência. Basta especificar um ID de zona hospedada no CRD e o operador cuida da criação, atualização e remoção dos registros para o domínio personalizado.

    Pré-requisitos

    • Um certificado do Gerenciador de Certificados da AWS (ACM) no estado Issued cobrindo o domínio desejado.
    • Uma zona hospedada no Route 53 para esse domínio.
    • As permissões IAM corretas adicionadas ao papel de execução do Operador de Inferência.

    Permissões IAM para o Route 53

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ACMCustomCertificateAccess",
          "Effect": "Allow",
          "Action": [
            "acm:DescribeCertificate",
            "acm:GetCertificate"
          ],
          "Resource": "arn:aws:acm:<region>:<account-id>:certificate/*"
        },
        {
          "Sid": "S3CertificateUpload",
          "Effect": "Allow",
          "Action": [
            "s3:PutObject",
            "s3:PutObjectTagging"
          ],
          "Resource": "arn:aws:s3:::<tls-certificate-bucket>/*",
          "Condition": {
            "StringEquals": {
              "s3:RequestObjectTag/CreatedBy": "HyperPodInference"
            }
          }
        },
        {
          "Sid": "Route53DNSManagement",
          "Effect": "Allow",
          "Action": [
            "route53:GetHostedZone",
            "route53:ListResourceRecordSets",
            "route53:ChangeResourceRecordSets"
          ],
          "Resource": "arn:aws:route53:::hostedzone/<hosted-zone-id>"
        }
      ]
    }

    Configurando o gerenciamento de DNS

    Habilite o Route 53 adicionando as seções tlsConfig e dnsConfig ao YAML de deploy do modelo:

    tlsConfig:
      customCertificateConfig:
        acmArn: arn:aws:acm:us-west-2:123456789012:certificate/abc12345-1234-1234-1234-abc123456789
        domainName: api.example.com
        tlsCertificateOutputS3Uri: s3://my-tls-bucket
    dnsConfig:
      hostedZoneId: Z1234567890ABC

    O domainName deve corresponder a um domínio coberto pelo certificado ACM. Para certificados wildcard (por exemplo, *.example.com), especifique o subdomínio exato (por exemplo, api.example.com).

    Para verificar o status do DNS:

    kubectl describe InferenceEndpointConfig my-model -n my-namespace

    Verifique a seção dnsStatus. Quando o campo Dns Health mostrar Active, o endpoint estará acessível pelo domínio personalizado. Para mais informações, consulte a documentação sobre certificados personalizados e gerenciamento de DNS com Route 53 para o HyperPod Inference.

    Carregamento de modelos via NVMe local

    O SageMaker HyperPod agora suporta o carregamento de pesos de modelos diretamente do armazenamento NVMe local do nó, em vez de transferi-los pela rede a partir do S3 ou do FSx. Ao eliminar o salto de rede durante a inicialização do pod, essa abordagem reduz significativamente o tempo de cold-start. É especialmente útil em eventos de autoescalonamento, cargas de trabalho scale-from-zero e failovers sensíveis à latência. O armazenamento NVMe local está disponível tipicamente nas famílias de instâncias P, G e Trn.

    Imagem original — fonte: AWS

    Passos para implantar um modelo a partir do NVMe

    Antes de tudo, certifique-se de que os pesos do modelo estão pré-carregados no armazenamento NVMe local dos nós de destino. Em seguida, monte o YAML de deploy. Para o YAML completo, consulte como fazer deploy de modelos a partir do armazenamento NVMe local com kubectl:

    spec:
      modelSourceConfig:
        modelSourceType: kubernetesVolume
        kubernetes:
          volumes:
            - name: model-weights
              hostPath:
                path: /opt/dlami/nvme/<YOUR_MODEL>
                type: Directory
      worker:
        modelVolumeMount:
          name: model-weights
          mountPath: /opt/ml/model

    Aplique o arquivo com o kubectl:

    kubectl apply -f deploy_nvme_k8s_volume.yaml

    Verifique o status do deploy:

    kubectl describe InferenceEndpointConfig nvme-k8s-volume -n $CLUSTER_NAMESPACE

    Contas de serviço personalizadas com permissões por pod

    Por padrão, os pods de inferência usam a ServiceAccount padrão do namespace. Para cargas de trabalho que precisam de credenciais AWS — como o download de pesos do S3 em um initContainer de fallback — é possível atribuir uma ServiceAccount personalizada com suporte a IRSA (Funções IAM para Contas de Serviço).

    Habilitando o suporte a contas de serviço personalizadas

    Esse recurso permanece desativado por padrão. Um administrador do cluster deve habilitá-lo:

    helm upgrade hyperpod-inference-operator <CHART_PATH> \
      --set enableCustomServiceAccounts=true \
      --reuse-values

    Se o operador estiver implantado como um complemento (add-on) do Amazon EKS, atualize a configuração do add-on para incluir enableCustomServiceAccounts: true nas configurações avançadas.

    Configurando uma conta de serviço personalizada

    Crie uma ServiceAccount do Kubernetes anotada com o ARN do papel IRSA:

    kubectl create sa my-inference-sa -n my-namespace
    kubectl annotate sa my-inference-sa -n my-namespace \
      eks.amazonaws.com/role-arn=arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>

    Adicione o rótulo user-assignable à ServiceAccount. Apenas contas com esse rótulo podem ser referenciadas por endpoints de inferência — esse é um controle de segurança para evitar escalada não autorizada de privilégios:

    kubectl label serviceaccount my-inference-sa \
      sagemaker.amazonaws.com/user-assignable=true \
      -n my-namespace

    Referencie a ServiceAccount no InferenceEndpointConfig:

    apiVersion: inference.sagemaker.aws.amazon.com/v1
    kind: InferenceEndpointConfig
    metadata:
      name: my-inference-endpoint
      namespace: my-namespace
    spec:
      kubernetes:
        serviceAccountName: my-inference-sa

    A AWS recomenda criar uma ServiceAccount dedicada por carga de trabalho de inferência, sem reutilização entre workloads não relacionadas. Os papéis IAM associados via IRSA devem ser escopados ao bucket S3 e prefixo específicos que contêm os pesos do modelo — evite políticas amplas como AmazonS3FullAccess.

    Como começar

    Para aproveitar todas essas capacidades, a AWS orienta atualizar o Operador de Inferência para a versão v3.2 e experimentar a adição de uma seção dataCapture ou dnsConfig a um deploy existente. As referências completas de configuração estão disponíveis na documentação oficial de cada funcionalidade.

    Fonte

    Enhancing enterprise inference on Amazon SageMaker HyperPod with data capture, Hugging Face, NVMe, and Route 53 integration (https://aws.amazon.com/blogs/machine-learning/enhancing-enterprise-inference-on-amazon-sagemaker-hyperpod-with-data-capture-hugging-face-nvme-and-route-53-integration/)

  • Suporte a OAuth no AWS MCP Server

    Agentes de IA agora se conectam ao AWS MCP Server via OAuth

    A AWS anunciou suporte a OAuth no AWS MCP Server, permitindo que agentes de inteligência artificial se conectem diretamente ao serviço usando o AWS Sign-In. A novidade elimina a necessidade de softwares adicionais de autenticação, já que a integração segue o padrão de mercado OAuth — amplamente adotado na indústria.

    Como funciona na prática

    Com essa atualização, as identidades AWS existentes continuam sendo utilizadas normalmente. Isso significa que métodos de login, permissões do Gerenciamento de Identidade e Acesso (IAM) e controles de governança já configurados seguem valendo — sem necessidade de reconfiguração.

    A autorização pode acontecer de duas formas:

    • De forma interativa: o desenvolvedor autoriza o agente diretamente pelo navegador.
    • De forma programática: usando autorização não-interativa (headless), ideal para pipelines automatizados e ambientes sem interface gráfica.

    Governança e controle para administradores

    Para quem cuida da segurança e compliance do ambiente, a AWS disponibilizou um conjunto de ferramentas para governar o acesso OAuth com os mecanismos já conhecidos do IAM. Entre as novidades estão:

    • Chaves de condição globais para políticas IAM
    • APIs de introspecção e revogação de tokens
    • Registro dinâmico de clientes (dynamic client registration)
    • Eventos de auditoria no CloudTrail

    Ou seja, os times de segurança ganham visibilidade e controle sobre o acesso dos agentes sem precisar adotar ferramentas fora do ecossistema AWS.

    Saiba mais

    Para aprofundar o tema, a AWS disponibiliza três recursos de documentação:

    Fonte

    OAuth support for the AWS MCP Server (https://aws.amazon.com/about-aws/whats-new/2026/07/oauth-aws-mcp-server/)

  • AWS Client VPN expande disponibilidade para quatro novas regiões

    Mais regiões disponíveis para o AWS Client VPN

    A AWS anunciou a expansão do AWS Client VPN para quatro novas regiões globais. A partir de agora, o serviço está disponível em:

    • Canadá Oeste (Calgary)
    • México (Central)
    • Ásia-Pacífico (Nova Zelândia)
    • Ásia-Pacífico (Taipei)

    Com essa expansão, organizações que operam nessas localidades passam a contar com uma opção de conectividade segura gerenciada diretamente pela AWS, sem precisar depender de soluções de terceiros ou infraestrutura própria de VPN.

    O que é o AWS Client VPN?

    O AWS Client VPN é um serviço totalmente gerenciado que permite conectar com segurança uma força de trabalho remota a recursos hospedados na AWS ou em redes on-premises — ou seja, em ambientes físicos da própria organização. Ele é especialmente útil para empresas com equipes distribuídas que precisam de acesso seguro e confiável aos sistemas corporativos, independentemente de onde os colaboradores estejam.

    Uma das principais vantagens do serviço é eliminar a necessidade de appliances de hardware dedicados à VPN e toda a complexidade operacional que eles trazem. Em vez disso, a AWS cuida da infraestrutura subjacente, e as organizações pagam apenas pelo que utilizam, seguindo o modelo pay-as-you-go — pague conforme o uso.

    Gerenciamento centralizado

    Outro ponto relevante destacado pela AWS é a facilidade de administração: todas as conexões VPN podem ser gerenciadas e monitoradas por meio de um único console. Isso reduz a fragmentação operacional e facilita a visibilidade sobre quem está conectado, quando e de onde.

    Saiba mais

    Para quem quiser se aprofundar no serviço, a AWS disponibiliza os seguintes recursos oficiais:

    Fonte

    AWS Client VPN extends availability to four additional AWS Regions (https://aws.amazon.com/about-aws/whats-new/2026/07/aws-client-vpn-four-additional-regions/)

  • Suporte a OAuth no AWS MCP Server: como conectar agentes de IA com segurança

    OAuth chega ao AWS MCP Server

    A AWS anunciou suporte a OAuth no AWS MCP Server, abrindo um caminho mais simples e seguro para conectar agentes de Inteligência Artificial às ferramentas e serviços da plataforma. A novidade permite que desenvolvedores autorizem o acesso de agentes usando os mesmos métodos de autenticação já conhecidos — seja pelo Console AWS ou pela Interface de Linha de Comando AWS (AWS CLI) — por meio de um fluxo baseado em navegador e amparado pelo padrão OAuth.

    O novo fluxo de autenticação é compatível com federação do Gerenciamento de Identidade e Acesso AWS (IAM), AWS IAM Identity Center e usuários root ou IAM convencionais. Junto com essa integração, a AWS também disponibilizou um conjunto de ferramentas de segurança e governança, incluindo:

    • Novas chaves de condição globais para OAuth
    • Introspecção e revogação de tokens
    • Registro dinâmico de clientes (DCR)
    • Novos elementos no AWS CloudTrail
    • Nova API para conectividade OAuth sem interface (headless)

    Tudo isso é compatível com a configuração IAM existente — permissões, roles, acesso federado — sem exigir mudanças estruturais.

    Como conectar um agente ao AWS MCP Server

    O passo a passo descrito pela AWS utiliza o Claude Code como exemplo, mas o mesmo processo se aplica a qualquer agente compatível com o Protocolo de Contexto de Modelo (MCP), como Kiro, Codex e Gemini. A documentação completa de configuração está disponível em Configurando o AWS MCP Server.

    Permissões necessárias

    Para conectar um agente ao AWS MCP Server, é preciso ter as permissões IAM necessárias para o fluxo OAuth. O comando abaixo adiciona uma política gerenciada com as permissões exigidas à role IAM desejada (substitua <MyRole> pelo nome da sua role):

    aws iam attach-role-policy \
      --role-name <MyRole> \
      --policy-arn arn:aws:iam::aws:policy/AWSMCPSignInOAuthAccessPolicy

    Passo 1: Configurar o AWS MCP Server no agente

    Execute o comando abaixo para adicionar o endpoint do AWS MCP Server à configuração do agente:

    claude mcp add --transport http aws-mcp https://aws-mcp.us-east-1.api.aws/mcp

    Passo 2: Revisar a solicitação de autorização

    Na primeira vez que o agente precisar acessar o AWS MCP Server, um navegador será aberto e o usuário será redirecionado para a página de autenticação do AWS Sign-In. Basta autenticar normalmente — como no console ou na CLI —, revisar a solicitação de autorização e aprovar o acesso. Uma mensagem de confirmação será exibida ao final.

    Imagem original — fonte: Aws

    Vale destacar que, se já houver uma sessão ativa no AWS Sign-In (por exemplo, porque o usuário se autenticou no console mais cedo), ela pode ser reutilizada sem necessidade de novo login.

    Passo 3: Começar a usar as ferramentas AWS

    Após a conexão, é possível verificar se o agente está devidamente conectado ao AWS MCP Server executando o comando /mcp dentro do Claude Code. O comando lista os servidores MCP configurados e confirma o status da conexão.

    Com a conexão estabelecida, o agente já pode invocar as ferramentas disponíveis no servidor. Por exemplo, ao enviar o prompt:

    Deploy a sample serverless web application into my development AWS account

    O Claude Code utiliza o AWS MCP Server para identificar a conta AWS ativa, confirmar a conta de destino e descrever o que será implantado antes de acionar qualquer serviço.

    Modelos de autorização disponíveis

    O AWS Sign-In suporta dois modelos de autorização para conectar agentes ao AWS MCP Server:

    • Autorização interativa: voltada para agentes de IA usados por desenvolvedores, com autenticação via navegador.
    • Autorização não-interativa (headless): para aplicações e agentes que já possuem credenciais AWS e não têm acesso a um navegador.

    Um ponto importante: autorizar um agente permite que ele acesse o AWS MCP Server em nome do usuário, mas não concede permissões AWS adicionais. Cada requisição ainda é avaliada pelas políticas IAM existentes, SCPs, RCPs, limites de permissão e demais controles organizacionais.

    Acesso interativo

    No fluxo interativo, o agente primeiro descobre o servidor OAuth do AWS Sign-In e se registra como cliente OAuth via Registro Dinâmico de Cliente (DCR). Em seguida, o usuário é redirecionado para autenticação e autorização. Após a aprovação, o AWS Sign-In emite tokens de acesso de curta duração e tokens de atualização. O gerenciamento automático desses tokens permite que o agente continue operando sem que o usuário precise se autenticar repetidamente.

    Esse modelo suporta três métodos de autenticação: credenciais IAM nativas para desenvolvedores individuais, acesso gerenciado via AWS IAM Identity Center para empresas, e acesso federado por provedores terceiros como Okta e Ping Identity para organizações maiores.

    Metadados OAuth e DCR

    Antes de solicitar autorização, o agente precisa descobrir os endpoints OAuth do AWS Sign-In e se registrar como cliente. O AWS Sign-In suporta descoberta de metadados OAuth e DCR, permitindo que agentes compatíveis se configurem automaticamente — sem que desenvolvedores precisem provisionar manualmente IDs e segredos de cliente OAuth.

    Quando um agente se conecta ao AWS MCP Server pela primeira vez, ele recupera os metadados do recurso protegido (RFC 9728) e os metadados OAuth do AWS Sign-In (RFC 8414). Em seguida, usa a RFC 7591 para se registrar, obter um client ID e iniciar o fluxo padrão de código de autorização OAuth. A lista de agentes e ambientes suportados está disponível em URIs de redirecionamento suportados para o AWS MCP Server.

    Acesso não-interativo (headless)

    Para agentes e aplicações que operam sem navegador ou interação humana, o AWS Sign-In oferece o fluxo de credenciais de cliente OAuth. Aplicações que já possuem credenciais AWS podem obter tokens de acesso OAuth diretamente. Veja um exemplo de como obter um token de acesso:

    aws signin create-oauth2-token-with-iam \
      --grant-type client_credentials \
      --resource aws-mcp.amazonaws.com \
      --region us-east-1
    {
      "accessToken": "ASOA****************************************...",
      "tokenType": "Bearer",
      "expiresIn": 3600
    }

    Nesse modelo, a autenticação no endpoint de token do AWS Sign-In é feita com credenciais SigV4, e o retorno é um token OAuth de curta duração. Pode ser necessário atualizar o SDK e a AWS CLI — consulte o guia da CLI para mais detalhes.

    Gerenciando o acesso OAuth

    O AWS Sign-In estende o modelo de autorização IAM com controles específicos para OAuth. Administradores podem combinar políticas IAM convencionais com novas condições voltadas para OAuth.

    Concedendo permissões OAuth

    O acesso OAuth é controlado via políticas IAM e requer duas ações específicas:

    • signin:AuthorizeOAuth2Access — permite autenticação interativa pelo fluxo de código de autorização OAuth
    • signin:CreateOAuth2Token — permite que aplicações obtenham tokens OAuth trocando códigos de autorização, tokens de atualização ou usando credenciais de cliente

    Quando uma aplicação solicita acesso, o AWS Sign-In cria uma concessão de autorização OAuth entre o agente e o AWS MCP Server. Essa concessão é representada como um recurso IAM:

    arn:aws:signin:us-east-1:012345678910:service-principal/aws-mcp.amazonaws.com

    Governança do acesso OAuth

    O AWS Sign-In introduz chaves de condição específicas para OAuth, permitindo controle granular sobre como os agentes obtêm autorização. A seguir, dois exemplos de padrões comuns de governança.

    Restringir OAuth ao localhost: a política abaixo permite apenas os fluxos de código de autorização e token de atualização para o AWS MCP Server, e restringe a entrega de tokens ao localhost:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "signin:AuthorizeOAuth2Access",
            "signin:CreateOAuth2Token"
          ],
          "Resource": "arn:aws:signin:*:*:service-principal/aws-mcp.amazonaws.com",
          "Condition": {
            "StringLike": {
              "signin:OAuthRedirectUri": "http://localhost:*"
            },
            "StringEquals": {
              "signin:OAuthGrantType": [
                "authorization_code",
                "refresh_token"
              ]
            }
          }
        }
      ]
    }

    Negar acesso para uma sessão OAuth específica: use a chave de condição global aws:SignInSessionArn para bloquear uma sessão suspeita ou comprometida sem afetar outras sessões ativas:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Action": [
            "*"
          ],
          "Resource": "*",
          "Condition": {
            "ArnEquals": {
              "aws:SignInSessionArn": "arn:aws:signin:us-east-1:111122223333:session/abc123-example-session-id"
            }
          }
        }
      ]
    }

    Exemplos adicionais de políticas IAM e SCP estão disponíveis na referência de chaves de condição do AWS Sign-In.

    Revogando tokens OAuth

    O AWS Sign-In oferece APIs de introspecção e revogação de tokens, permitindo que administradores construam ferramentas personalizadas para validação e revogação. O acesso a essas APIs é controlado pelas permissões signin:IntrospectOAuth2Token e signin:RevokeOAuth2Token.

    A API de introspecção verifica se um token está ativo e retorna informações sobre a autorização associada. Já a API de revogação permite invalidar tokens de atualização individuais sem afetar outras sessões ativas — útil quando é preciso revogar o acesso de uma autorização específica sem impactar o restante da organização.

    Monitorando a atividade OAuth com CloudTrail

    Todas as atividades relacionadas ao OAuth são registradas no AWS CloudTrail, incluindo solicitações de autorização, emissão de tokens, revogações e eventos de introspecção. Os logs capturam detalhes como o cliente OAuth, o AWS MCP Server de destino, a URI de redirecionamento, o fluxo de autorização e a sessão de autenticação associada.

    Além disso, chamadas de API feitas com tokens de acesso OAuth incluem o contexto aws:SignInSessionArn, permitindo correlacionar a atividade de API com a sessão OAuth de origem. Isso facilita o monitoramento, a investigação de comportamentos anômalos e a integração com fluxos de auditoria, conformidade e resposta a incidentes.

    Abaixo, um exemplo de evento AuthorizeOAuth2Access no CloudTrail:

    {
      "eventVersion": "1.11",
      "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROATJHQDX737YZP****:testuser",
        "arn": "arn:aws:sts::111111111111:assumed-role/Admin/testuser",
        "accountId": "111111111111",
        "sessionContext": {
          "sessionIssuer": {
            "type": "Role",
            "principalId": "AROA2IRT4N5U4RDHM2LG4",
            "arn": "arn:aws:iam::111111111111:role/Admin",
            "accountId": "111111111111",
            "userName": "Admin"
          },
          "attributes": {
            "creationDate": "2026-06-09T05:06:39Z",
            "mfaAuthenticated": "false"
          }
        }
      },
      "eventTime": "2026-06-09T05:09:00Z",
      "eventSource": "signin.amazonaws.com",
      "eventName": "AuthorizeOAuth2Access",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "192.0.0.2",
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",
      "requestParameters": {
        "resource": "https://aws-mcp.us-west-2.api.aws/mcp",
        "redirect_uri": "http://127.0.0.1:60432/oauth/callback",
        "code_challenge_method": "S256",
        "client_id": "arn:aws:signin:us-west-2::external-client/dcr/609544da-aasa-49a4-ab11-c2r457fa999"
      },
      "responseElements": null,
      "additionalEventData": {
        "success": "true"
      },
      "requestID": "4fb4ff7b-6yu7-9090-78i9-9c0088a65134",
      "eventID": "bb05b222-31ec-4237-b8e7-8eb26d4fd48b",
      "readOnly": true,
      "eventType": "AwsApiCall",
      "managementEvent": true,
      "recipientAccountId": "111111111111",
      "eventCategory": "Management",
      "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "us-west-2.oauth.signin.aws"
      }
    }

    E um exemplo de evento CreateOAuth2Token:

    {
      "eventVersion": "1.11",
      "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROATJHQDX737YZP7****:testuser",
        "arn": "arn:aws:sts::111111111111:assumed-role/Admin/testuser",
        "accountId": "111111111111",
        "sessionContext": {
          "sessionIssuer": {
            "type": "Role",
            "principalId": "AROA2IRT4N5U4RDHM****",
            "arn": "arn:aws:iam::111111111111:role/Admin",
            "accountId": "111111111111",
            "userName": "Admin"
          },
          "attributes": {
            "creationDate": "2026-06-09T05:06:39Z",
            "mfaAuthenticated": "false"
          },
          "signInSessionArn":""
        }
      },
      "eventTime": "2026-06-09T05:10:04Z",
      "eventSource": "signin.amazonaws.com",
      "eventName": "CreateOAuth2Token",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "192.0.0.2",
      "userAgent": "curl/8.7.1",
      "requestParameters": {
        "resource": "https://aws-mcp.us-west-2.api.aws/mcp",
        "client_id": "arn:aws:signin:us-west-2::external-client/dcr/609544da-b3dd-49a4-ab11-c2e98d7fa999"
      },
      "responseElements": null,
      "additionalEventData": {
        "signInSessionArn": "arn:aws:signin:us-west-2:111111111111:session/daff060f-7871-5tg6-67yu-a07bbdabe61a",
        "grant_type": "refresh_token",
        "success": "true"
      },
      "requestID": "44d6d7ce-e4r5-4cbf-0909-bfb8a8295a76",
      "eventID": "f79cc63f-b383-4e3c-a1e5-97c7db1ab833",
      "readOnly": true,
      "eventType": "AwsApiCall",
      "managementEvent": true,
      "recipientAccountId": "111111111111",
      "eventCategory": "Management",
      "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "us-west-2.oauth.signin.aws"
      }
    }

    Detalhes adicionais sobre eventos de auditoria para chamadas feitas via tokens OAuth ao AWS MCP Server estão documentados em Registrando chamadas de API do AWS MCP Server com o AWS CloudTrail.

    Conclusão

    O suporte a OAuth no AWS Sign-In representa um avanço importante para quem trabalha com agentes de IA integrados à AWS. A novidade simplifica a conexão de aplicações e agentes à plataforma, mantendo toda a estrutura de IAM, governança e auditoria já existente. Para aprofundar o conhecimento, a AWS disponibiliza a documentação de Autenticação com OAuth 2.0 no Guia do Usuário do AWS Sign-In e o guia de Configuração do AWS MCP Server no Guia do Usuário do Agent Toolkit para AWS.

    Fonte

    Introducing OAuth Support for AWS MCP Server (https://aws.amazon.com/blogs/security/introducing-oauth-support-for-aws-mcp-server/)