Back to Blog
awscloudserverlessnews

AWS re:Invent 2025: Uma Análise Aprofundada – A Verdade Sobre o Novo Lambda e S3

A AWS re:Invent 2025 revelou mudanças importantes para Lambda e S3. Descubra a verdade sobre as Funções Duráveis, a nova cobrança INIT e o armazenamento vetorial pronto para IA do S3.

DataFormatHub Team
Dec 26, 202513 min
Share:
AWS re:Invent 2025: Uma Análise Aprofundada – A Verdade Sobre o Novo Lambda e S3

re:Invent 2025: Desvendando o Hype por Trás da Nova Cara do Lambda e S3

Olá a todos, mais uma re:Invent ficou para trás, e a poeira digital ainda está baixando na Las Vegas Strip. Como um engenheiro sênior que passou uma semana analisando as palestras principais, sessões de aprofundamento e o inevitável marketing, estou aqui para dar a vocês a verdade nua e crua sobre as últimas ofertas da AWS para Lambda e S3. Esqueçam os jargões de "revolucionário" e "inovador". Vamos mergulhar nas implicações práticas, as nuances de configuração e, o mais importante, onde a borracha realmente encontra a estrada – e onde ainda pode estar um pouco escorregadia.

O tema deste ano pareceu ser um mandato duplo: estender as capacidades serverless para fluxos de trabalho cada vez mais complexos e com estado, e tornar o S3 uma plataforma de dados ainda mais formidável e pronta para IA. No papel, parece robusto. Mas, como todos nós sabemos, o diabo está nos logs do cloudformation deploy.

Funções Duráveis do Lambda: A Promessa de Longo Prazo vs. a Realidade

A AWS finalmente trouxe um padrão nativo de "execução durável" para o Lambda, denominado Funções Duráveis do Lambda. A proposta é atraente: escrever aplicações confiáveis e de vários passos diretamente dentro do Lambda usando padrões de linguagem de programação familiares, completas com checkpointing, suspensão por até um ano e recuperação automática. A comunidade tem clamado por algo assim, recorrendo frequentemente ao Step Functions ou à orquestração personalizada.

Como Funciona (e Onde Fica Complicado)

As Funções Duráveis não são um novo tipo de recurso; são um aprimoramento das funções Lambda existentes. Você habilita a execução durável em uma função Lambda padrão e, em seguida, usando um novo SDK de código aberto (disponível para Python, Node.js e TypeScript no lançamento), você obtém acesso a primitivas de "contexto durável" como steps e waits. O wrapper with_durable_execution em torno do seu handler é o ponto de entrada.

Considere um fluxo de trabalho de processamento de pedidos em várias etapas:

  1. Validar o pedido.
  2. Processar o pagamento (chamada de API externa).
  3. Notificar o serviço de envio.
  4. Aguardar a confirmação do envio (até 7 dias).
  5. Atualizar o cliente.

Anteriormente, o passo 4 exigiria um estado Wait do Step Functions ou um mecanismo de polling complicado baseado em SQS/DynamoDB. Com Funções Duráveis, você pode escrever algo parecido com isto (pseudo-Python):

from lambda_durable_sdk import DurableContext, with_durable_execution

@with_durable_execution
def order_processor_handler(event: dict, context: DurableContext):
    order_id = event["order_id"]

    # Passo 1: Validar pedido (lógica Lambda normal)
    context.step("validate_order", validate_order_logic, order_id)

    # Passo 2: Processar pagamento (chamada externa, potencialmente retentável)
    payment_result = context.step("process_payment", process_payment_api, order_id)
    if payment_result["status"] != "SUCCESS":
        # Funções duráveis lidam com retentativas implicitamente ou explicitamente
        raise PaymentFailedException("Pagamento falhou após retentativas.")

    # Passo 3: Notificar envio
    shipping_ack = context.step("notify_shipping", notify_shipping_service, order_id)

    # Passo 4: Aguardar evento externo (confirmação de envio)
    # É aqui que a mágica acontece: a função suspende, sem custo de computação.
    # Ela retoma quando um evento externo específico (por exemplo, mensagem SQS, callback API Gateway)
    # é recebido, correlacionado com esta instância específica da função durável.
    shipment_details = context.wait_for_external_event("shipment_confirmed", timeout_seconds=7*24*3600) # até um ano

    # Passo 5: Atualizar cliente
    context.step("update_customer", update_customer_record, order_id, shipment_details)

    return {"status": "Pedido processado com sucesso", "order_id": order_id}

A chave aqui é o mecanismo subjacente de "checkpoint e replay". O runtime das Funções Duráveis captura o estado da sua função em cada chamada step ou wait, persiste-o e, em seguida, reidrata-o ao retomar. Isso não é totalmente novo; as Funções Duráveis do Microsoft Azure (nas quais isso é claramente inspirado) usam isso há anos. O tempo limite de execução para toda a função durável agora pode chegar a um ano, com um período de retenção configurável para checkpoints.

O Problema: Embora simplifique o código, a experiência do desenvolvedor para depurar fluxos de trabalho complexos e suspensos será crucial. O monitoramento precisará amadurecer rapidamente além dos logs básicos do CloudWatch. Além disso, a forma como os eventos externos são correlacionados a uma instância específica da função durável (por exemplo, por meio de uma mensagem SQS com um ID de correlação) requer um design cuidadoso. Ele abstrai o Step Functions, mas não elimina a necessidade de gerenciamento de estado cuidadoso e lógica robusta de tratamento de erros dentro do seu código. A alegação de "nenhum tooling personalizado necessário" parece otimista ao lidar com estados distribuídos de longa duração.

Instâncias Gerenciadas do Lambda: Serverless com Rodinhas?

Este anúncio pareceu que a AWS reconhecia um ponto problemático específico: os cold starts imprevisíveis e o desempenho variável do Lambda padrão para cargas de trabalho especializadas e de estado constante. Instâncias Gerenciadas do Lambda permite que você execute funções Lambda em computação EC2 enquanto supostamente mantém a simplicidade operacional serverless. É apresentado como uma forma de acessar opções de computação especializadas (pense em GPUs, tipos de instância específicos) e otimizar custos para cenários de carga constante sem o ônus operacional total do EC2.

A Realidade Técnica

Essencialmente, a AWS provisiona e gerencia instâncias EC2 dedicadas para suas funções Lambda. Isso oferece características de desempenho mais previsíveis, pois a computação subjacente não é compartilhada tão agressivamente em um ambiente multilocatário. Você define como suas funções Lambda são executadas nessas instâncias EC2, escolhendo perfis de computação específicos.

Da perspectiva do desenvolvedor, o cenário ideal é que o código da sua função Lambda permaneça inalterado. A diferença operacional é o que a AWS lida: criação de instâncias, patching, escalonamento com base em métricas de utilização (CPU/memória, em vez de apenas contagem de solicitações) e terminação.

Mas aqui está o problema: Se o seu tráfego for altamente "picoso", passando de zero a milhares de solicitações em segundos, o escalonamento instantâneo do Lambda padrão ainda reagirá mais rapidamente. As Instâncias Gerenciadas escalam com base na utilização de recursos, que é um processo assíncrono, introduzindo um perfil de latência diferente. O modelo de custo, embora potencialmente otimizado para estado constante, precisa de uma avaliação cuidadosa. Você está efetivamente pagando pela capacidade EC2 provisionada, mesmo que ela seja gerenciada pelo Lambda. Isso turva a linha entre "serverless" e "computação gerenciada" significativamente. É uma solução pragmática para nichos específicos, mas chamar isso de simplicidade puramente "serverless" parece um exagero para aqueles que realmente abraçam a natureza efêmera do FaaS. Para aqueles que procuram escapar do tempo limite de 15 minutos do Lambda e precisam de desempenho consistente em hardware especializado, esta pode ser uma alternativa prática (se menos "serverless") ao ECS/Fargate.

A Verdade Nua e Crua: Nova Cobrança do Lambda para a Fase INIT

Este atingiu a comunidade como um banho de água fria. A partir de 1º de agosto de 2025, a AWS agora cobrará pela fase de inicialização (fase INIT) em todas as configurações de função Lambda. Anteriormente, para funções empacotadas em ZIP usando runtimes gerenciados, essa fase era essencialmente gratuita. Agora, ela é padronizada, o que significa que você pagará por ela como faz com imagens de contêiner, runtimes personalizados e Concorrência Provisionada.

Por Que Isso Importa

A fase INIT inclui o download do seu código, a inicialização do runtime e a execução de qualquer código fora do seu handler principal. Para funções complexas com grandes dependências, frameworks pesados ou anexos VPC, isso pode levar centenas de milissegundos ou até alguns segundos.

Impacto e Mitigação

  • Aumento de Custo: A AWS não forneceu números de impacto específicos, mas as estimativas sugerem um aumento de 5-50% nos custos do Lambda para funções com sobrecarga de inicialização significativa. Funções com dependências mínimas verão um impacto leve (5-10%), enquanto aquelas com frameworks pesados ou vários SDKs podem ver aumentos substanciais (25-50%).
  • Otimização é a Chave (Agora Mais do Que Nunca): Essa mudança força um novo foco na otimização de cold start. Técnicas como redução do tamanho do pacote, uso de Camadas Lambda para dependências compartilhadas, otimização do código de inicialização e alavancagem do SnapStart (para runtimes suportados) se tornam críticas.
  • Repense as Arquiteturas: Para APIs voltadas para o usuário onde cada milissegundo e dólar contam, ou para funções invocadas com pouca frequência, essa mudança de cobrança pode levar as equipes a reavaliar suas escolhas. Uma função Lambda ainda é adequada ou você deve considerar Fargate/ECS para processos de longa duração ou até mesmo combinar várias funções Lambda para reduzir os cold starts gerais?

Isso não é uma mudança "inovadora" em um sentido positivo, mas um lembrete prático de que serverless não está isento de considerações de custo para inicialização. É um movimento claro para monetizar um custo anteriormente "oculto" de sua infraestrutura.

Vetores S3: Um Novo Tipo de Dado para a Era da IA?

Com o hype do ciclo da IA ainda em pleno andamento, a AWS lançou os Vetores S3, agora geralmente disponíveis. Este é o suporte nativo do S3 para armazenar e consultar dados vetoriais, com o objetivo de reduzir o custo total de propriedade do armazenamento e da consulta de vetores em até 90% em comparação com soluções especializadas de banco de dados vetoriais. Embora a AWS esteja promovendo o S3 como uma plataforma pronta para IA, AI Agents 2025: Why AutoGPT and CrewAI Still Struggle with Autonomy destaca que a infraestrutura é apenas metade da batalha.

O Mergulho Técnico

Os Vetores S3 permitem armazenar embeddings de alta dimensão diretamente dentro dos buckets S3 e realizar pesquisas de similaridade. Ele se orgulha de uma escala impressionante: até dois bilhões de vetores por índice (um aumento de 40x em relação à capacidade de visualização) e até 20 trilhões de vetores por bucket. As alegações de desempenho incluem uma velocidade 2-3x mais rápida para consultas frequentes.

As principais integrações são com Amazon Bedrock Knowledge Bases e Amazon OpenSearch Service, facilitando a construção de agentes de IA, sistemas de Geração Aumentada por Recuperação (RAG) e aplicações de pesquisa semântica.

# Pseudo-código para interação com S3 Vectors (conceitual)
import boto3

s3_client = boto3.client('s3')

# Assumindo que seu bucket S3 'my-vector-bucket' esteja configurado para S3 Vectors
# e um índice 'my-vector-index' exista.

def store_vector_embedding(bucket_name, object_key, vector_data, metadata=None):
    """Armazena um embedding vetorial como um objeto S3 com metadados associados."""
    s3_client.put_object(
        Bucket=bucket_name,
        Key=object_key,
        Body=str(vector_data), # Na realidade, este seria um formato binário especializado
        Metadata={
            'x-amz-meta-vector-index-id': 'my-vector-index',
            'x-amz-meta-vector-data': str(vector_data) # Simplificado para exemplo
            # Outros metadados para filtragem, etc.
        }
        # Parâmetros específicos do S3 Vectors adicionais estariam aqui
    )
    print(f"Vetor armazenado para {object_key}")

def query_vector_embedding(bucket_name, query_vector, top_k=10):
    """Consulta S3 Vectors para embeddings semelhantes."""
    response = s3_client.query_objects(
        Bucket=bucket_name,
        QueryType='VECTOR_SIMILARITY', # Novo tipo de consulta
        QueryParameters={
            'VectorIndexId': 'my-vector-index',
            'QueryVector': str(query_vector),
            'TopK': top_k
        }
        # Parâmetros específicos do S3 Vectors adicionais
    )
    return response['Results']

# Exemplo de uso (altamente simplificado)
embedding = [0.1, 0.2, 0.9, ...] # seu embedding real
store_vector_embedding('my-vector-bucket', 'doc-123.vec', embedding)

search_results = query_vector_embedding('my-vector-bucket', [0.11, 0.22, 0.88, ...])
for res in search_results:
    print(f"Objeto semelhante encontrado: {res['ObjectKey']}, Similaridade: {res['SimilarityScore']}")

A Visão Cética: Embora as alegações de redução de custos sejam atraentes, o verdadeiro desempenho para sistemas RAG ao vivo e de alta vazão ainda precisa ser visto. Bancos de dados vetoriais especializados há anos otimizam a pesquisa de similaridade de baixa latência e estratégias de indexação complexas. O S3, embora incrivelmente durável e escalável, é fundamentalmente um armazenamento de objetos. Como seus modelos de consistência eventual impactarão as atualizações vetoriais em tempo real? E quão transparentes são os mecanismos de indexação subjacentes? A redução de custo de 90% provavelmente é comparada a executar seu próprio banco de dados vetorial especializado no EC2, não necessariamente a alternativas totalmente gerenciadas com modelos de preços diferentes. É um movimento pragmático para manter as cargas de trabalho de IA dentro do ecossistema AWS, mas os desenvolvedores devem testar rigorosamente para seus casos de uso específicos antes de abandonar as lojas de vetores dedicadas.

Tabelas S3 e Metadados: O Abraço da Nuvem ao Apache Iceberg

A AWS também está fazendo um grande esforço para a arquitetura de data lakehouse com Tabelas S3, agora geralmente disponíveis, e Metadados S3. As Tabelas S3 otimizam especificamente o armazenamento de dados tabulares no Apache Iceberg, prometendo consultas de alto desempenho e baixo custo com ferramentas como Athena, EMR e Spark.

Por Dentro

A ideia central é automatizar as complexidades do gerenciamento de tabelas Apache Iceberg no S3. Anteriormente, embora você pudesse construir tabelas Iceberg no S3, isso veio com "muito trabalho" no gerenciamento de compactação, controles de acesso e evolução do esquema. As Tabelas S3 visam abstrair isso, fornecendo um serviço totalmente gerenciado que melhora o desempenho em até 10x TPS e 3x o desempenho da consulta. Ele também suporta Tiering Inteligente para otimização automática de custos.

As Tabelas S3 tratam as tabelas como recursos de primeira classe da AWS, permitindo que você aplique controles de segurança por meio de políticas IAM, semelhante a como você gerencia buckets ou prefixos. Os Metadados S3, enquanto isso, se concentram na geração automática de metadados de objetos em quase tempo real, úteis para aplicações de análise e inferência, e se integram com as Tabelas S3.

Minha Visão Crítica: Esta é uma abstração muito necessária. O Apache Iceberg é poderoso, mas operacionalmente intensivo. A AWS gerenciar as "partes difíceis", como compactação e armazenamento de metadados, é uma vitória. No entanto, as alegações de desempenho precisam de escrutínio. "Até 3x mais rápido o desempenho da consulta" é ótimo, mas mais rápido do que o quê? Iceberg gerenciado manualmente? Um S3 select bruto? O diabo estará nos benchmarks com consultas complexas do mundo real. Além disso, embora simplifique as coisas, entender o formato da tabela Iceberg subjacente e suas implicações para o particionamento de dados e a evolução do esquema ainda é fundamental para os engenheiros de dados. A promessa de "analítica e IA/ML unificadas em uma única cópia de dados" é forte, mas os pontos de integração com outros serviços (por exemplo, trabalhos Spark personalizados, mecanismos de consulta não AWS) precisarão de documentação robusta e adoção pela comunidade. É um passo prático em direção a um data lakehouse mais utilizável, mas não é uma bala de prata que anula as melhores práticas de engenharia de dados.

Operações em Lote S3 e Gravações Condicionais: Manipulando Dados em Escala

A AWS também lançou aprimoramentos significativos para os principais recursos de manipulação de dados do S3: Operações em Lote S3 agora são 10x mais rápidas e Gravações Condicionais S3 introduzem funcionalidade fortemente consistente no estilo mutex.

Operações em Lote em Detalhe

O aumento de 10x no desempenho das Operações em Lote S3 é uma boa notícia para qualquer pessoa que lide com processamento de dados em larga escala ou migrações. Eles também adicionaram uma opção "sem manifesto", permitindo que você aponte um trabalho diretamente para um bucket ou prefixo para processar todos os objetos dentro dele, em vez de exigir um arquivo de manifesto pré-gerado. A automação da criação de funções IAM também foi simplificada e a escala do trabalho foi aumentada para lidar com até 20 bilhões de objetos.

# Exemplo simplificado da AWS CLI para Operações em Lote S3 sem manifesto

# Crie um trabalho para executar checksums em todos os objetos em 'my-archive-bucket'
aws s3control create-job \
  --account-id 123456789012 \
  --operation '{"S3InitiateRestoreObject":{"ExpirationInDays":7,"OutputLocation":{"Bucket":"arn:aws:s3:::my-report-bucket","Prefix":"restore-reports/"}}}' \
  --report {"Bucket":"arn:aws:s3:::my-report-bucket","Prefix":"batch-job-reports/","Format":"CSV","Enabled":true,"Scope":"AllTasks"} \
  --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20230628","Location":{"Bucket":"arn:aws:s3:::my-archive-bucket","Key":"no-manifest-prefix-placeholder"}},"Filter":{"Prefix":"archive/"}}' \
  --priority 1 \
  --role-arn "arn:aws:iam::123456789012:role/S3BatchOperationsRole" \
  --description "Executar checksums no prefixo de arquivo"

Gravações Condicionais

Esta é uma pequena, mas crítica, melhoria. O S3 sempre foi eventualmente consistente para gravações, levando a problemas de "leitura após gravação" em cargas de trabalho paralelas onde vários clientes podem tentar atualizar o mesmo objeto. As gravações condicionais fornecem um mecanismo fortemente consistente no estilo mutex para garantir que um objeto não tenha sido modificado antes de uma atualização. Isso é normalmente alcançado usando cabeçalhos de solicitação condicional HTTP como If-Match (com uma ETag) ou If-Unmodified-Since. Tornar isso um recurso de primeira classe, "no estilo mutex", implica garantias mais fortes, simplificando potencialmente padrões complexos de bloqueio distribuído que anteriormente exigiam serviços externos como DynamoDB ou lógica de coordenação personalizada.

As Letras Miúdas: Outros Refinamentos do S3 e Lambda

Além dos recursos de destaque, várias atualizações menores, mas impactantes, foram lançadas:

  • Melhorias de Desempenho e Custo do S3 Express One Zone: Esta classe de armazenamento de latência ultrabaixa agora se orgulha de leituras de dados 10x mais rápidas e reduções de custo de solicitação de 50% em comparação com o S3 padrão. Lembre-se de que é "One Zone" – o que significa garantias de durabilidade mais baixas do que o S3 padrão.
  • Redução de Custo de Tagging de Objetos S3: Uma redução bem-vinda de 35% no custo de tagging de objetos ($ 0,0065 por 10.000 tags mensais), efetiva a partir de 1º de março de 2025. Isso torna o gerenciamento de ciclo de vida baseado em tags mais economicamente viável.
  • Novos Runtimes Lambda: Python 3.14, Java 25 e Node.js 24 agora são suportados, com a AWS visando a disponibilidade dentro de 90 dias do lançamento da comunidade.
  • Simulador de Injeção de Falhas (FIS) para Lambda: A capacidade de injetar falhas como latência e erros diretamente nas funções Lambda por meio do FIS é um passo significativo para testes de resiliência.
  • Logs do CloudWatch Live Tail: Streaming de logs em tempo real e análises para funções Lambda, diretamente no console ou por meio do AWS Toolkit para VS Code.

Conclusão: Uma Evolução Pragmática (Mas Não Perfeita)

A re:Invent 2025 demonstrou o esforço contínuo da AWS para expandir os horizontes do serverless e aprimorar os recursos do S3, particularmente no cenário emergente da IA. Funções Duráveis do Lambda são, talvez, a mudança arquitetônica mais significativa, oferecendo uma alternativa atraente ao Step Functions para muitos fluxos de trabalho de longo prazo e com estado. No entanto, a sobrecarga operacional do gerenciamento desses fluxos de trabalho duráveis, especialmente em torno da correlação de eventos externos e da depuração, não deve ser subestimada. Instâncias Gerenciadas do Lambda parecem que a AWS reconhece um ponto problemático específico: os cold starts imprevisíveis e o desempenho variável do Lambda padrão para cargas de trabalho especializadas e de estado constante. E a mudança na cobrança para a fase INIT é um banho de água fria, um lembrete de que até o serverless tem seus custos ocultos, exigindo vigilância renovada na otimização.

Na frente do S3, Vetores S3 e Tabelas S3 são jogadas claras para posicionar o S3 como a base para arquiteturas de IA e data lakehouse. Embora as alegações de desempenho e custo sejam atraentes, os desenvolvedores devem abordá-las com uma dose saudável de ceticismo e testes rigorosos. O S3 está evoluindo, mas ainda é um armazenamento de objetos em seu coração, e suas novas capacidades precisarão provar seu valor contra alternativas especializadas. As Operações em Lote e Gravações Condicionais são melhorias sólidas e práticas que abordam frustrações de longa data com a manipulação de dados em larga escala e consistência.

No geral, a re:Invent 2025 entregou um conjunto de aprimoramentos robustos e práticos, em vez de avanços verdadeiramente "revolucionários". A AWS está claramente refinando suas ofertas principais, tornando-as mais capazes para cargas de trabalho modernas complexas. Mas, como sempre, o ônus está sobre nós, os desenvolvedores, para cortar o marketing, entender os mecanismos subjacentes e testar rigorosamente essas novas ferramentas na fornalha da produção do mundo real.


Fontes


🛠️ Ferramentas Relacionadas

Explore estas ferramentas DataFormatHub relacionadas a este tópico:


📚 Você Também Pode Gostar