Back to Blog
awscloudserverlessnews

AWS re:Invent 2025: Analisi Approfondita – La Verità su Lambda e il Restyling di S3

AWS re:Invent 2025 ha rivelato importanti cambiamenti per Lambda e S3. Scopri la verità sulle Funzioni Durature, la nuova fatturazione INIT e lo storage vettoriale AI-ready di S3.

DataFormatHub Team
Dec 26, 202513 min
Share:
AWS re:Invent 2025: Analisi Approfondita – La Verità su Lambda e il Restyling di S3

re:Invent 2025: Svelando la Realtà dietro il Restyling di Lambda e S3

Bene, gente, un altro re:Invent è alle spalle e la polvere digitale si sta ancora depositando lungo la Strip di Las Vegas. Come ingegnere senior che ha appena trascorso una settimana a setacciare le presentazioni principali, le sessioni di approfondimento e l'inevitabile pubblicità, sono qui per darvi la verità non adulterata sulle ultime offerte di AWS per Lambda e S3. Dimenticate i termini alla moda come "rivoluzionario" e "innovativo". Approfondiremo le implicazioni pratiche, le sfumature della configurazione e, soprattutto, dove la gomma incontra la strada – e dove potrebbe essere ancora un po' scivolosa.

Il tema di quest'anno è sembrato un mandato duplice: estendere le capacità serverless a flussi di lavoro sempre più complessi e basati sullo stato, e rendere S3 una piattaforma di dati ancora più formidabile e pronta per l'IA. Sulla carta, sembra solido. Ma come sappiamo tutti, il diavolo si nasconde nei log di cloudformation deploy.

Lambda Durable Functions: La Promessa a Lungo Termine vs. la Realtà

AWS ha finalmente portato un modello di "esecuzione duratura" nativo su Lambda, denominato Lambda Durable Functions. La proposta è allettante: scrivere applicazioni affidabili, multi-step direttamente all'interno di Lambda utilizzando modelli di linguaggio di programmazione familiari, completi di checkpointing, sospensione fino a un anno e ripristino automatico. La community chiedeva da tempo qualcosa di simile, spesso ricorrendo a Step Functions o orchestrazioni personalizzate.

Come Funziona (e Dove Diventa Complicato)

Le Durable Functions non sono un nuovo tipo di risorsa; sono un miglioramento delle funzioni Lambda esistenti. Si abilita l'esecuzione duratura su una funzione Lambda standard e, quindi, utilizzando un nuovo SDK open-source (disponibile per Python, Node.js e TypeScript al lancio), si ottiene l'accesso a primitive di "contesto duraturo" come steps e waits. Il wrapper with_durable_execution attorno al tuo handler è il punto di ingresso.

Considera un flusso di lavoro di elaborazione degli ordini in più fasi:

  1. Valida l'ordine.
  2. Elabora il pagamento (chiamata API esterna).
  3. Notifica il servizio di spedizione.
  4. Attendi la conferma della spedizione (fino a 7 giorni).
  5. Aggiorna il cliente.

In precedenza, il passaggio 4 avrebbe richiesto uno stato Wait di Step Functions o un complicato meccanismo di polling basato su SQS/DynamoDB. Con le Durable Functions, potresti scrivere qualcosa di simile a questo (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"]

    # Step 1: Validate order (normal Lambda logic)
    context.step("validate_order", validate_order_logic, order_id)

    # Step 2: Process payment (external call, potentially retryable)
    payment_result = context.step("process_payment", process_payment_api, order_id)
    if payment_result["status"] != "SUCCESS":
        # Durable functions handle retries implicitly or explicitly
        raise PaymentFailedException("Payment failed after retries.")

    # Step 3: Notify shipping
    shipping_ack = context.step("notify_shipping", notify_shipping_service, order_id)

    # Step 4: Wait for external event (shipment confirmation)
    # This is where the magic happens: the function suspends, no compute cost.
    # It resumes when a specific external event (e.g., SQS message, API Gateway callback)
    # is received, correlating with this specific durable function instance.
    shipment_details = context.wait_for_external_event("shipment_confirmed", timeout_seconds=7*24*3600) # up to a year

    # Step 5: Update customer
    context.step("update_customer", update_customer_record, order_id, shipment_details)

    return {"status": "Order processed successfully", "order_id": order_id}

La chiave qui è il meccanismo sottostante di "checkpoint e replay". L'ambiente di runtime delle Durable Functions cattura lo stato della tua funzione a ogni chiamata step o wait, lo persiste e quindi lo riattiva al riavvio. Questo non è del tutto nuovo; le Durable Functions di Microsoft Azure (da cui chiaramente si ispira) lo utilizzano da anni. Il timeout di esecuzione per l'intera funzione duratura può ora arrivare fino a un anno, con un periodo di conservazione configurabile per i checkpoint.

L'Insidia: Sebbene semplifichi il codice, l'esperienza di sviluppo per il debug di flussi di lavoro complessi e sospesi sarà cruciale. Il monitoraggio dovrà maturare rapidamente oltre i semplici log di CloudWatch. Inoltre, il "come" della correlazione di eventi esterni a una specifica istanza di funzione duratura (ad esempio, tramite un messaggio SQS con un ID di correlazione) richiede un'attenta progettazione. Astrae Step Functions, ma non elimina la necessità di una gestione dello stato attenta e di una logica di gestione degli errori robusta all'interno del tuo codice. L'affermazione di "non sono necessari strumenti personalizzati" sembra ottimistica quando si ha a che fare con stati lunghi e distribuiti.

Lambda Managed Instances: Serverless con le Rotelle di Supporto?

Questo annuncio è sembrato un riconoscimento da parte di AWS di un punto dolente specifico: gli avvii a freddo imprevedibili e le prestazioni variabili di Lambda standard per carichi di lavoro specializzati e stabili. Lambda Managed Instances consente di eseguire funzioni Lambda su calcolo EC2 mantenendo presumibilmente la semplicità operativa serverless. È presentato come un modo per accedere a opzioni di calcolo specializzate (pensa a GPU, tipi di istanza specifici) e ottimizzare i costi per scenari di carico costante senza l'onere operativo completo di EC2.

La Realtà Tecnica

Essenzialmente, AWS fornisce e gestisce istanze EC2 dedicate per le tue funzioni Lambda. Questo ti offre caratteristiche di prestazioni più prevedibili, poiché il calcolo sottostante non è condiviso in modo aggressivo in un ambiente multi-tenant. Definisci come le tue funzioni Lambda vengono eseguite su queste istanze EC2, scegliendo profili di calcolo specifici.

Dal punto di vista dello sviluppatore, lo scenario ideale è che il codice della tua funzione Lambda rimanga invariato. La differenza operativa è ciò che AWS gestisce: creazione dell'istanza, patching, scalabilità in base alle metriche di utilizzo (CPU/memoria, piuttosto che solo conteggio delle richieste) e terminazione.

Ma ecco l'insidia: se il tuo traffico è altamente "a picchi", passando da zero a migliaia di richieste in pochi secondi, la scalabilità istantanea di Lambda standard reagirà comunque più velocemente. Le Managed Instances scalano in base all'utilizzo delle risorse, che è un processo asincrono, introducendo un diverso profilo di latenza. Il modello di costo, pur potenzialmente ottimizzato per lo stato stazionario, deve essere valutato attentamente. Stai effettivamente pagando per la capacità EC2 provisionata, anche se gestita da Lambda. Questo offusca il confine tra "serverless" e "calcolo gestito" in modo significativo. È una soluzione pragmatica per nicchie specifiche, ma definirla puramente "semplicità serverless" sembra un'esagerazione per coloro che abbracciano veramente la natura effimera del FaaS. Per coloro che cercano di sfuggire al timeout di 15 minuti di Lambda e hanno bisogno di prestazioni costanti su hardware specializzato, questa potrebbe essere un'alternativa pratica (se meno "serverless") a ECS/Fargate.

La Cruda Verità: La Nuova Fatturazione di Lambda per la Fase Init

Questo ha colpito la community come una doccia fredda. A partire dal 1° agosto 2025, AWS fatturerà la fase di inizializzazione (fase INIT) in tutte le configurazioni di funzioni Lambda. In precedenza, per le funzioni confezionate in ZIP che utilizzavano runtime gestiti, questa fase era essenzialmente gratuita. Ora, è standardizzata, il che significa che la pagherai come per le immagini container, i runtime personalizzati e la Concorrenza Provisionata.

Perché è Importante

La fase INIT include il download del tuo codice, l'avvio del runtime e l'esecuzione di qualsiasi codice al di fuori del tuo handler principale. Per funzioni complesse con dipendenze di grandi dimensioni, framework pesanti o allegati VPC, questo può richiedere centinaia di millisecondi o addirittura pochi secondi.

Impatto e Mitigazione

  • Aumento dei Costi: AWS non ha fornito cifre di impatto specifiche, ma le stime suggeriscono un aumento dei costi di Lambda dal 5 al 50% per le funzioni con un overhead di inizializzazione significativo. Le funzioni con dipendenze minime vedranno un impatto leggero (5-10%), mentre quelle con framework pesanti o più SDK potrebbero vedere aumenti sostanziali (25-50%).
  • L'Ottimizzazione è Fondamentale (Ora Più che Mai): Questo cambiamento forza un rinnovato focus sull'ottimizzazione dell'avvio a freddo. Tecniche come la riduzione delle dimensioni del pacchetto, l'utilizzo di Lambda Layers per le dipendenze condivise, l'ottimizzazione del codice di inizializzazione e lo sfruttamento di SnapStart (per i runtime supportati) diventano fondamentali.
  • Ripensa le Architetture: Per le API rivolte all'utente dove ogni millisecondo e dollaro conta, o per le funzioni invocate raramente, questo cambiamento di fatturazione potrebbe spingere i team a rivalutare le loro scelte. Una Lambda è ancora la scelta giusta, o dovresti considerare Fargate/ECS per processi più lunghi, o addirittura combinare più funzioni Lambda per ridurre gli avvii a freddo complessivi?

Questo non è un "game-changer" in senso positivo, ma un promemoria pratico che il serverless non è esente da considerazioni sui costi per l'inizializzazione. È una chiara mossa per monetizzare un costo precedentemente "nascosto" della loro infrastruttura.

Amazon S3 Vectors: Un Nuovo Tipo di Dati per l'Era dell'IA?

Con il ciclo di hype dell'IA ancora a pieno regime, AWS ha lanciato Amazon S3 Vectors, ora generalmente disponibile. Questo è il supporto nativo di S3 per l'archiviazione e l'interrogazione di dati vettoriali, con l'obiettivo di ridurre il costo totale di proprietà dell'archiviazione e dell'interrogazione vettoriale fino al 90% rispetto alle soluzioni di database vettoriali specializzate. Mentre AWS sta promuovendo S3 come una piattaforma pronta per l'IA, AI Agents 2025: Why AutoGPT and CrewAI Still Struggle with Autonomy evidenzia che l'infrastruttura è solo metà della battaglia.

Il Deep Dive Tecnico

S3 Vectors consente di archiviare embedding ad alta dimensione direttamente all'interno dei bucket S3 ed eseguire ricerche di similarità. Vanta una scalabilità impressionante: fino a due miliardi di vettori per indice (un aumento di 40 volte rispetto alla capacità di anteprima) e fino a 20 trilioni di vettori per bucket. Le affermazioni sulle prestazioni includono una velocità 2-3 volte superiore per le query frequenti.

Le integrazioni chiave sono con Amazon Bedrock Knowledge Bases e Amazon OpenSearch Service, rendendo più facile la creazione di agenti AI, sistemi Retrieval Augmented Generation (RAG) e applicazioni di ricerca semantica.

# Pseudo-code for S3 Vectors interaction (conceptual)
import boto3

s3_client = boto3.client('s3')

# Assuming your S3 bucket 'my-vector-bucket' is configured for S3 Vectors
# and an index 'my-vector-index' exists.

def store_vector_embedding(bucket_name, object_key, vector_data, metadata=None):
    """Stores a vector embedding as an S3 object with associated metadata."""
    s3_client.put_object(
        Bucket=bucket_name,
        Key=object_key,
        Body=str(vector_data), # In reality, this would be a specialized binary format
        Metadata={
            'x-amz-meta-vector-index-id': 'my-vector-index',
            'x-amz-meta-vector-data': str(vector_data) # Simplified for example
            # Other metadata for filtering, etc.
        }
        # Additional S3 Vectors specific parameters would be here
    )
    print(f"Stored vector for {object_key}")

def query_vector_embedding(bucket_name, query_vector, top_k=10):
    """Queries S3 Vectors for similar embeddings."""
    response = s3_client.query_objects(
        Bucket=bucket_name,
        QueryType='VECTOR_SIMILARITY', # New query type
        QueryParameters={
            'VectorIndexId': 'my-vector-index',
            'QueryVector': str(query_vector),
            'TopK': top_k
        }
        # Additional S3 Vectors specific parameters
    )
    return response['Results']

# Example usage (highly simplified)
embedding = [0.1, 0.2, 0.9, ...] # your actual embedding
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"Found similar object: {res['ObjectKey']}, Similarity: {res['SimilarityScore']}")

L'Opinione Scettica: Sebbene le affermazioni di riduzione dei costi siano allettanti, le vere prestazioni per i sistemi RAG live e ad alta produttività devono ancora essere verificate. I database vettoriali specializzati hanno trascorso anni ottimizzando la ricerca di similarità a bassa latenza e le strategie di indicizzazione complesse. S3, pur essendo incredibilmente durevole e scalabile, è fondamentalmente un archivio di oggetti. Come i suoi modelli di coerenza finale influenzeranno gli aggiornamenti vettoriali in tempo reale? E quanto sono trasparenti i meccanismi di indicizzazione sottostanti? La riduzione dei costi del 90% è probabilmente rispetto a esecuzione di un database vettoriale specializzato su EC2, non necessariamente rispetto ad alternative completamente gestite con modelli di prezzo diversi. È una mossa pragmatica per mantenere i carichi di lavoro AI all'interno dell'ecosistema AWS, ma gli sviluppatori dovrebbero eseguire benchmark approfonditi per i loro casi d'uso specifici prima di abbandonare completamente gli archivi vettoriali dedicati.

S3 Tables e Metadata: L'Abbraccio al Cloud di Apache Iceberg

AWS sta facendo un gioco significativo per l'architettura data lakehouse con Amazon S3 Tables, ora generalmente disponibile, e Amazon S3 Metadata. S3 Tables ottimizza specificamente l'archiviazione di dati tabellari in Apache Iceberg, promettendo query ad alte prestazioni e a basso costo con strumenti come Athena, EMR e Spark.

Sotto il Cofano

L'idea di base è automatizzare le complessità della gestione delle tabelle Apache Iceberg su S3. In precedenza, pur potendo costruire tabelle Iceberg su S3, ciò comportava "un sacco di lavoro" nella gestione della compattazione, dei controlli di accesso e dell'evoluzione dello schema. S3 Tables mira ad astrarre questo, fornendo un servizio completamente gestito che migliora le prestazioni fino a 10 volte le TPS e 3 volte le prestazioni delle query. Supporta anche Intelligent Tiering per l'ottimizzazione automatica dei costi.

S3 Tables tratta le tabelle come risorse AWS di primo livello, consentendo di applicare controlli di sicurezza tramite policy IAM, in modo simile a come si gestiscono bucket o prefissi. S3 Metadata, nel frattempo, si concentra sulla generazione automatica di metadati degli oggetti in quasi tempo reale, utile per applicazioni di analisi e inferenza, e si integra con S3 Tables.

La Mia Visione Critica: Questa è un'astrazione molto necessaria. Apache Iceberg è potente ma intensivo dal punto di vista operativo. AWS che gestisce le "parti difficili" come la compattazione e gli archivi di metadati è un vantaggio. Tuttavia, le affermazioni sulle prestazioni devono essere esaminate attentamente. "Fino a 3 volte le prestazioni delle query più veloci" è ottimo, ma più veloce di cosa? Iceberg gestito manualmente? Un S3 select grezzo? Il diavolo sarà nei benchmark rispetto a query complesse del mondo reale. Inoltre, sebbene semplifichi le cose, comprendere il formato della tabella Iceberg sottostante e le sue implicazioni per il partizionamento dei dati e l'evoluzione dello schema è ancora fondamentale per gli ingegneri dei dati. La promessa di "analisi e AI/ML unificati su una singola copia di dati" è forte, ma i punti di integrazione con altri servizi (ad esempio, job Spark personalizzati, motori di query non AWS) avranno bisogno di una documentazione robusta e di un'adozione da parte della community. È un passo pratico verso un data lakehouse più utilizzabile, ma non è una panacea che annulla le best practice dell'ingegneria dei dati.

S3 Batch Operations & Conditional Writes: Gestire i Dati su Larga Scala

AWS ha anche rilasciato miglioramenti significativi alle capacità di manipolazione dei dati principali di S3: S3 Batch Operations sono ora fino a 10 volte più veloci e S3 Conditional Writes introducono funzionalità fortemente coerenti in stile mutex.

Batch Operations Deep Dive

L'aumento di 10 volte delle prestazioni per S3 Batch Operations è una buona notizia per chiunque gestisca l'elaborazione o la migrazione di dati su larga scala. Hanno anche aggiunto un'opzione "senza manifest", che consente di puntare un job direttamente a un bucket o prefisso per elaborare tutti gli oggetti al suo interno, anziché richiedere un file manifest pregenerato. L'automazione della creazione di ruoli IAM è stata semplificata e la scala del job è stata aumentata per gestire fino a 20 miliardi di oggetti.

# Simplified AWS CLI example for S3 Batch Operations with no-manifest

# Create a job to run checksums on all objects in '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 "Perform checksums on archive prefix"

Conditional Writes

Questo è un piccolo ma fondamentale miglioramento. S3 è sempre stato coerente alla fine per le scritture, portando a problemi di "lettura dopo la scrittura" in carichi di lavoro paralleli in cui più client potrebbero tentare di aggiornare lo stesso oggetto. Le scritture condizionali forniscono un meccanismo fortemente coerente in stile mutex per garantire che un oggetto non sia stato modificato prima di un aggiornamento. Questo viene in genere ottenuto utilizzando le intestazioni di richiesta condizionali HTTP come If-Match (con un ETag) o If-Unmodified-Since. Renderlo una funzionalità di primo livello, "in stile mutex", implica garanzie più forti, semplificando potenzialmente modelli di blocco distribuiti complessi che in precedenza richiedevano servizi esterni come DynamoDB o logica di coordinamento personalizzata.

Il Piccolo Scritto: Altri Affinamenti di S3 e Lambda

Oltre alle funzionalità principali, sono stati rilasciati diversi aggiornamenti più piccoli ma di impatto:

  • S3 Express One Zone Performance e Riduzione dei Costi: Questa classe di archiviazione ultra-bassa latenza vanta ora letture di dati 10 volte più veloci e una riduzione del 50% dei costi di richiesta rispetto a S3 standard. Ricorda che è "One Zone" – il che significa garanzie di durabilità inferiori rispetto a S3 standard.
  • Riduzione dei Costi di Tagging degli Oggetti S3: Una gradita riduzione del 35% dei costi per il tagging degli oggetti ($ 0,0065 per 10.000 tag mensili), a partire dal 1° marzo 2025. Questo rende più economicamente fattibile la gestione del ciclo di vita basata su tag estesi.
  • Nuovi Runtime Lambda: Python 3.14, Java 25 e Node.js 24 sono ora supportati, con AWS che punta alla disponibilità entro 90 giorni dal rilascio della community.
  • Fault Injection Simulator (FIS) per Lambda: La possibilità di iniettare errori come latenza ed errori direttamente nelle funzioni Lambda tramite FIS è un passo avanti significativo per i test di resilienza.
  • CloudWatch Logs Live Tail: Streaming e analisi di log in tempo reale per le funzioni Lambda, direttamente nella console o tramite l'AWS Toolkit per VS Code.

Conclusione: Un'Evoluzione Pragmatica (ma Non Perfetta)

re:Invent 2025 ha mostrato il continuo impegno di AWS nell'espandere gli orizzonti del serverless e nel rafforzare le capacità di S3, in particolare nel fiorente panorama dell'IA. Lambda Durable Functions è probabilmente lo spostamento architetturale più significativo, offrendo un'alternativa allettante a Step Functions per molti flussi di lavoro a lungo termine e basati sullo stato. Tuttavia, l'overhead operativo della gestione di questi flussi di lavoro duraturi, in particolare per quanto riguarda la correlazione di eventi esterni e il debug, non dovrebbe essere sottovalutato. Lambda Managed Instances sembra un compromesso, un'offerta pragmatica per profili di prestazioni e costi specifici, ma diluisce la promessa fondamentale di "serverless". E il cambiamento di fatturazione per l'avvio a freddo è un brusco promemoria che anche il serverless ha i suoi costi nascosti, richiedendo una rinnovata vigilanza nell'ottimizzazione.

Sul fronte S3, S3 Vectors e S3 Tables sono chiari tentativi di posizionare S3 come la base per le architetture AI e data lakehouse. Sebbene le affermazioni sulle prestazioni e sui costi siano allettanti, gli sviluppatori dovrebbero affrontarle con una sana dose di scetticismo e benchmark rigorosi. S3 si sta evolvendo, ma è ancora un archivio di oggetti nel suo cuore e le sue nuove funzionalità dovranno dimostrare il loro valore rispetto ad alternative specializzate. Le Batch Operations e le Conditional Writes sono solidi miglioramenti pratici che affrontano le frustrazioni di lunga data con la manipolazione dei dati su larga scala e la coerenza.

Nel complesso, re:Invent 2025 ha fornito una suite di miglioramenti solidi e pratici piuttosto che innovazioni veramente "rivoluzionarie". AWS sta chiaramente perfezionando le sue offerte principali, rendendole più capaci per i complessi carichi di lavoro moderni. Ma come sempre, l'onere è su di noi, gli sviluppatori, di superare il marketing, comprendere i meccanismi sottostanti e testare rigorosamente questi nuovi strumenti nella fornace della produzione reale.


Fonti


🛠️ Strumenti Correlati

Esplora questi strumenti DataFormatHub relativi a questo argomento:


📚 Potrebbe Piaccerti Anche