Cloud & IT Cert Prep · leksjon

Lambda@Edge og hendelsesdrevne mønstre

Kjør funksjoner på CloudFronts edge-lokasjoner, og koble Lambda til SQS, SNS, DynamoDB Streams og Kinesis for hendelsesdrevne arkitekturer.

Leksjon 4 av 413 trinn

Lambda@Edge og hendelsesdrevne mønstre er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva er Lambda@Edge?

Lambda@Edge lar Dem kjøre Lambda-funksjoner på CloudFront edge locations over hele verden – nærmere sluttbrukerne – i stedet for i en sentralisert Region. Dette gjør det mulig å tilpasse HTTP-forespørsler og -svar med mindre enn ett millisekund ekstra forsinkelse i CDN-laget. Lambda@Edge-funksjoner distribueres globalt og aktiveres ved hver CloudFront-hendelse for cache-treff eller cache-miss, noe som gjør dem ideelle for lette oppgaver som manipulerer forespørsler.

De fire utløserpunktene i CloudFront

Lambda@Edge kan avskjære trafikk på fire punkter i CloudFronts livssyklus for forespørsler:

  • Viewer Request: utløses når CloudFront mottar en forespørsel fra seeren (brukeren), før cachen kontrolleres
  • Origin Request: utløses når CloudFront videresender et cache-miss til origin
  • Origin Response: utløses når origin returnerer et svar, før det caches
  • Viewer Response: utløses før CloudFront returnerer svaret til seeren

Begrensninger i Lambda@Edge sammenlignet med vanlig Lambda

Lambda@Edge har strengere begrensninger enn vanlig Lambda: maksimalt 128 MB minne (viewer-hendelser), 1 GB (origin-hendelser), maksimalt 5 sekunder tidsavbrudd (viewer) og 30 sekunder (origin). Funksjoner må opprettes i us-east-1 og distribueres til edge via CloudFront. VPC, miljøvariabler og Lambda Layers støttes ikke. Disse begrensningene betyr at Lambda@Edge er laget for lette transformasjoner, ikke tung behandling.

Vanlige bruksområder for Lambda@Edge

Lambda@Edge egner seg godt til: A/B-testing (skrive om URL-er til ulike origin-stier basert på informasjonskapsler), autentisering (validere JWT-er på edge før videresending til origin), manipulering av HTTP-headere (legge til sikkerhetsh headere som HSTS, CSP og X-Frame-Options), normalisering av URL-er (viderekoble www til ikke-www eller håndheve avsluttende skråstreker) og personalisering (levere ulikt innhold basert på seerens land fra CloudFront-Viewer-Country-headeren).

// 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 sammenlignet med Lambda@Edge

CloudFront Functions er svært lette JavaScript-funksjoner som bare kjører på viewer request/response-stadiene, med en grense på 2 ms for kjøretid og betydelig lavere kostnad. For enkle bruksområder (omskriving av URL-er, manipulering av headere og normalisering av cache-nøkler) foretrekkes CloudFront Functions fremfor Lambda@Edge fordi de er raskere og billigere. Bruk Lambda@Edge når De trenger tilgang til nettverkskall, større nyttelaster eller utløserpunktene for origin request/response.

Hendelsesdrevet arkitektur med Lambda

Hendelsesdrevet arkitektur kobler tjenester sammen gjennom hendelser – meldinger som representerer noe som har skjedd. I AWS er Lambda den primære hendelseskonsumenten: den mottar hendelser fra SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge og mer. Hver hendelse utløser en Lambda-kjøring, slik at systemer kan reagere asynkront og uavhengig uten tett kobling. Dette mønsteret muliggjør løs kobling, uavhengig skalering og isolering av feil.

Lambda som SQS-konsument

Lambda kan konfigureres som en tilordning av hendelseskilde for SQS. Lambda poller køen, henter opptil en batchstørrelse med meldinger (opptil 10 000 for standardkøer og 10 for FIFO) og aktiverer funksjonen én gang per batch. Hvis funksjonen mislykkes, returneres hele batchen til køen. Konfigurer et batchvindu for å vente på flere meldinger før funksjonen aktiveres, slik at gjennomstrømmingen forbedres. Bruk en DLQ på kilde-SQS-køen for meldinger som mislykkes gjentatte ganger.

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 med DynamoDB Streams

DynamoDB Streams registrerer hver endring på elementnivå (INSERT, MODIFY, REMOVE) som en ordnet sekvens av hendelser. Lambda leser fra strømmen ved hjelp av en tilordning av hendelseskilde med TRIM_HORIZON (start fra den eldste) eller LATEST (start fra den nyeste). Lambda behandler poster i rekkefølge innenfor en partisjon. Batch-er som mislykkes, blokkerer videre behandling av den samme partisjonen til problemet er løst – bruk bisect on error til å dele opp mislykkede batcher og isolere problematiske poster.

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 med Kinesis Data Streams

Lambda behandler Kinesis-poster på samme måte som DynamoDB Streams – én samtidig kjøring per shard. Viktige konfigurasjonsalternativer omfatter parallelliseringsfaktor (opptil 10 samtidige Lambda-invokasjoner per shard, som behandler underbatcher parallelt) og enhanced fan-out (dedikert gjennomstrømming på 2 MB/s per shard for Lambda-konsumenten). Disse alternativene øker gjennomstrømmingen betydelig for strømmer med høyt volum uten at antallet shards må økes.

EventBridge som hendelsesruter

Amazon EventBridge er den anbefalte hendelsesbussen for å koble sammen AWS-tjenester og egendefinerte applikasjoner. Hendelser flyter inn i en buss, og regler filtrerer hendelser etter mønster og ruter dem til mål som Lambda, SQS, Step Functions og flere. EventBridge frikobler hendelsesprodusenter og -konsumenter fullstendig – ingen av dem kjenner til den andre. Den standardiserte hendelsesbussen mottar hendelser fra AWS-tjenester. Opprett en egendefinert hendelsesbuss for hendelser fra applikasjonen Deres.

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'

Fan-out-mønster: SNS til flere Lambda-funksjoner

Et vanlig hendelsesdrevet mønster er fan-out: én hendelse utløser flere parallelle behandlingsforløp. Publiser til et SNS topic, så reagerer flere Lambda-funksjonsabonnementer uavhengig av hverandre. Når en ordre for eksempel legges inn, kan hendelsen fordeles til: en Lambda-funksjon som sender en bekreftelses-e-post, en Lambda-funksjon som oppdaterer lagerbeholdningen, og en Lambda-funksjon som varsler lageret. Hver konsument er uavhengig og skaleres separat – ingen enkeltkonsument kan blokkere de andre.

Kort kontroll

Test forståelsen Deres av AWS Solutions Architect-konsepter (SAA-C03) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært at Lambda@Edge kjører funksjoner på CloudFront edge locations med fire utløserpunkter (viewer request/response og origin request/response) for oppgaver som autentisering, omskriving av URL-er og manipulering av headere; CloudFront Functions er et rimeligere alternativ med lavere forsinkelse for enkle transformasjoner på viewer-stadiet; og hendelsesdrevne mønstre med SQS, DynamoDB Streams, Kinesis, EventBridge og SNS fan-out muliggjør løst koblede arkitekturer der Lambda reagerer på hendelser i sanntid. Neste tema er standardkøer kontra FIFO-køer i SQS.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Lambda@Edge og hendelsesdrevne mønstre» gratis?

Ja – hele teksten i «Lambda@Edge og hendelsesdrevne mønstre» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Lambda@Edge og hendelsesdrevne mønstre»?

Kjør funksjoner på CloudFronts edge-lokasjoner, og koble Lambda til SQS, SNS, DynamoDB Streams og Kinesis for hendelsesdrevne arkitekturer. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Lambda@Edge og hendelsesdrevne mønstre»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Lambda-funksjoner: Kjøretider, utløsere og handlere
  2. Samtidighet, begrensning og reservert samtidighet
  3. Lambda-lag og distribusjonspakker
  4. Lambda@Edge og hendelsesdrevne mønstre
← Tilbake til Cloud & IT Cert Prep