0Pricing
Cloud & IT Cert Prep · Lezione

Lambda@Edge e pattern event-driven

Eseguirete funzioni nelle edge location di CloudFront e collegherete Lambda a SQS, SNS, DynamoDB Streams e Kinesis per architetture event-driven.

Lambda@Edge e pattern event-driven è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Che cos'è Lambda@Edge?

Lambda@Edge consente di eseguire funzioni Lambda nelle CloudFront edge locations di tutto il mondo, più vicine agli utenti finali, invece che in una Regione centrale. In questo modo può personalizzare le richieste e le risposte HTTP con una latenza aggiuntiva inferiore al millisecondo a livello CDN. Le funzioni Lambda@Edge vengono distribuite globalmente e invocate a ogni evento di cache hit o cache miss di CloudFront, risultando ideali per attività leggere di manipolazione delle richieste.

I quattro punti di attivazione di CloudFront

Lambda@Edge può intercettare il traffico in quattro punti del ciclo di vita delle richieste CloudFront:

  • Viewer Request: si attiva quando CloudFront riceve una richiesta dal viewer (utente), prima di verificare la cache
  • Origin Request: si attiva quando CloudFront inoltra all'origine una richiesta in seguito a un cache miss
  • Origin Response: si attiva quando l'origine restituisce una risposta, prima della memorizzazione nella cache
  • Viewer Response: si attiva prima che CloudFront restituisca la risposta al viewer

Limitazioni di Lambda@Edge rispetto a Lambda standard

Lambda@Edge presenta limiti più rigidi rispetto a Lambda standard: massimo 128 MB di memoria (eventi viewer), 1 GB (eventi origin), timeout massimo di 5 secondi (viewer) e 30 secondi (origin). Le funzioni devono essere create in us-east-1 e distribuite all'edge tramite CloudFront. Non sono supportati VPC, variabili d'ambiente o Lambda Layers. Questi vincoli fanno sì che Lambda@Edge sia progettato per trasformazioni leggere, non per elaborazioni intensive.

Casi d'uso comuni di Lambda@Edge

Lambda@Edge è particolarmente adatto a: A/B testing (riscrivere gli URL verso percorsi di origine diversi in base ai cookie), autenticazione (convalidare i JWT all'edge prima dell'inoltro all'origine), manipolazione degli header HTTP (aggiungere header di sicurezza come HSTS, CSP e X-Frame-Options), normalizzazione degli URL (reindirizzare da www a non-www o imporre gli slash finali) e personalizzazione (servire contenuti diversi in base al Paese del viewer indicato nell'header CloudFront-Viewer-Country).

// Viewer Request: Add security headers
exports.handler = async (event) => {
    const response = event.Records[0].cf.response;
    response.headers['strict-transport-security'] = [{
        key: 'Strict-Transport-Security',
        value: 'max-age=63072000; includeSubdomains; preload'
    }];
    response.headers['x-frame-options'] = [{
        key: 'X-Frame-Options',
        value: 'DENY'
    }];
    return response;
};

CloudFront Functions e Lambda@Edge a confronto

Le CloudFront Functions sono funzioni JavaScript estremamente leggere che vengono eseguite solo nelle fasi di richiesta/risposta del viewer, con un limite di esecuzione di 2 ms e un costo molto più contenuto. Per casi d'uso semplici (riscrittura degli URL, manipolazione degli header, normalizzazione della chiave della cache), è preferibile CloudFront Functions a Lambda@Edge perché è più veloce ed economico. Utilizzi Lambda@Edge quando ha bisogno di accedere a chiamate di rete, payload più grandi o ai punti di attivazione delle richieste/risposte all'origine.

Architettura basata sugli eventi con Lambda

Un'event-driven architecture collega i servizi tramite eventi, cioè messaggi che rappresentano qualcosa che è accaduto. In AWS, Lambda è il principale consumer di eventi: riceve eventi da SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge e altri servizi. Ogni evento attiva un'esecuzione Lambda, consentendo ai sistemi di reagire in modo asincrono e indipendente senza un accoppiamento stretto. Questo pattern abilita loose coupling, scalabilità indipendente e isolamento dagli errori.

Lambda come consumer di SQS

Lambda può essere configurato come event source mapping per SQS. Lambda esegue il polling della coda, recupera fino a una batch size di messaggi (fino a 10.000 per le code standard e 10 per le code FIFO) e invoca la funzione una volta per batch. Se la funzione ha esito negativo, l'intero batch viene restituito alla coda. Configuri una batch window per attendere altri messaggi prima dell'invocazione, migliorando il throughput. Utilizzi una DLQ sulla coda SQS di origine per i messaggi che continuano a non essere elaborati.

aws lambda create-event-source-mapping \
  --function-name 'OrderProcessor' \
  --event-source-arn 'arn:aws:sqs:us-east-1:123456789012:OrderQueue' \
  --batch-size 10 \
  --maximum-batching-window-in-seconds 5

Lambda con DynamoDB Streams

DynamoDB Streams acquisisce ogni modifica a livello di elemento (INSERT, MODIFY, REMOVE) come una sequenza ordinata di eventi. Lambda legge dallo stream utilizzando un event source mapping con TRIM_HORIZON (inizio dal più vecchio) o LATEST (inizio dal più recente). Lambda elabora i record in ordine all'interno di una partizione. I batch non riusciti bloccano l'ulteriore elaborazione della stessa partizione finché il problema non viene risolto: utilizzi bisect on error per suddividere i batch che causano errori e isolare i record problematici.

aws lambda create-event-source-mapping \
  --function-name 'StreamProcessor' \
  --event-source-arn 'arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...' \
  --starting-position TRIM_HORIZON \
  --batch-size 100 \
  --bisect-batch-on-function-error

Lambda con Kinesis Data Streams

Lambda elabora i record Kinesis in modo simile a DynamoDB Streams: una singola esecuzione simultanea per shard. Le principali opzioni di configurazione includono il parallelisation factor (fino a 10 invocazioni Lambda simultanee per shard, con elaborazione parallela di sottobatch) e l'enhanced fan-out (throughput dedicato di 2 MB/s per shard per il consumer Lambda). Queste opzioni aumentano notevolmente il throughput degli stream ad alto volume senza incrementare il numero di shard.

EventBridge come router degli eventi

Amazon EventBridge è l'event bus consigliato per collegare servizi AWS e applicazioni personalizzate. Gli eventi confluiscono in un bus e le rules li filtrano in base a un pattern e li instradano verso destinazioni tra cui Lambda, SQS, Step Functions e altri servizi. EventBridge disaccoppia completamente i produttori dagli eventi e i consumer: nessuno dei due conosce l'altro. L'event bus predefinito riceve gli eventi dai servizi AWS; crei un custom event bus per gli eventi dell'applicazione.

aws events put-rule \
  --name 'OrderPlacedRule' \
  --event-pattern '{"source": ["com.myapp.orders"], "detail-type": ["OrderPlaced"]}' \
  --state ENABLED

aws events put-targets \
  --rule 'OrderPlacedRule' \
  --targets 'Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:123456789012:function:InventoryUpdater'

Pattern fan-out: da SNS a più funzioni Lambda

Un pattern comune basato sugli eventi è il fan-out: un singolo evento attiva più pipeline di elaborazione parallele. Pubblicando su un SNS topic, più sottoscrizioni a funzioni Lambda reagiscono indipendentemente. Ad esempio, un evento di ordine effettuato può diramarsi verso: una Lambda che invia un'e-mail di conferma, una Lambda che aggiorna l'inventario e una Lambda che avvisa il magazzino. Ogni consumer è indipendente e scala separatamente: nessun consumer può bloccare gli altri.

Verifica rapida

Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che Lambda@Edge esegue funzioni nelle edge location di CloudFront con quattro punti di attivazione (viewer request/response e origin request/response) per attività come autenticazione, riscrittura degli URL e manipolazione degli header; le CloudFront Functions sono l'alternativa più economica e con latenza inferiore per semplici trasformazioni nella fase viewer; infine, i pattern basati sugli eventi che utilizzano SQS, DynamoDB Streams, Kinesis, EventBridge e il fan-out di SNS consentono architetture scarsamente accoppiate in cui Lambda reagisce agli eventi in tempo reale. Ora esploreremo le code SQS Standard e FIFO a confronto.

Domande Frequenti

La lezione «Lambda@Edge e pattern event-driven» è gratuita?

Sì — il testo completo di «Lambda@Edge e pattern event-driven» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Lambda@Edge e pattern event-driven»?

Eseguirete funzioni nelle edge location di CloudFront e collegherete Lambda a SQS, SNS, DynamoDB Streams e Kinesis per architetture event-driven. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Lambda@Edge e pattern event-driven»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Funzioni Lambda: runtime, trigger e handler
  2. Concorrenza, throttling e concorrenza riservata
  3. Lambda Layers e pacchetti di deployment
  4. Lambda@Edge e pattern event-driven
← Torna a Cloud & IT Cert Prep