Cloud & IT Cert Prep · Lektion

Lambda@Edge og hændelsesdrevne mønstre

Kør funktioner på CloudFront Edge Locations, og forbind Lambda med SQS, SNS, DynamoDB Streams og Kinesis til hændelsesdrevne arkitekturer.

Lektion 4 af 413 trin

Lambda@Edge og hændelsesdrevne mønstre er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad er Lambda@Edge?

Lambda@Edge lader dig køre Lambda-funktioner på CloudFront edge locations over hele verden – tættere på slutbrugerne – i stedet for i en centraliseret Region. Det gør det muligt at tilpasse HTTP-forespørgsler og -svar med en ekstra latenstid på under et millisekund i CDN-laget. Lambda@Edge-funktioner distribueres globalt og kaldes ved hver CloudFront-hændelse med cache hit eller miss, hvilket gør dem ideelle til letvægtsopgaver med manipulation af forespørgsler.

De fire CloudFront-udløsningspunkter

Lambda@Edge kan opfange trafik på fire punkter i CloudFronts livscyklus for forespørgsler:

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

Begrænsninger ved Lambda@Edge sammenlignet med almindelig Lambda

Lambda@Edge har strengere begrænsninger end almindelig Lambda: højst 128 MB hukommelse (seertevent), 1 GB (origin-events), højst 5 sekunders timeout (seere) og 30 sekunder (origin). Funktioner skal oprettes i us-east-1 og distribueres til edge via CloudFront. Der er ingen understøttelse af VPC, ingen miljøvariabler og ingen Lambda Layers. Disse begrænsninger betyder, at Lambda@Edge er beregnet til letvægts-transformationer, ikke tung behandling.

Almindelige anvendelser af Lambda@Edge

Lambda@Edge er velegnet til: A/B-test (omskriv URL'er til forskellige origin-stier baseret på cookies), godkendelse (validér JWT'er ved edge, før de videresendes til origin), manipulation af HTTP-headere (tilføj sikkerhedsheadere som HSTS, CSP og X-Frame-Options), normalisering af URL'er (omdirigér www til non-www, eller gennemtving afsluttende skråstreger) samt personalisering (vis forskelligt indhold baseret på seerens land fra headeren 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 sammenlignet med Lambda@Edge

CloudFront Functions er ultralette JavaScript-funktioner, der kun kører på stadierne for viewer-forespørgsler og -svar, med en grænse på 2 ms for eksekveringstid og en langt lavere pris. Til enkle anvendelser (omskrivning af URL'er, manipulation af headere og normalisering af cache-nøgler) foretrækkes CloudFront Functions frem for Lambda@Edge, fordi de er hurtigere og billigere. Brug Lambda@Edge, når du har brug for netværkskald, større payloads eller udløsningspunkterne for origin-forespørgsler og -svar.

Hændelsesdrevet arkitektur med Lambda

Hændelsesdrevet arkitektur forbinder tjenester gennem hændelser – meddelelser, der repræsenterer noget, som er sket. I AWS er Lambda den primære hændelsesforbruger: den modtager hændelser fra SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge og flere. Hver hændelse udløser en Lambda-eksekvering, så systemer kan reagere asynkront og uafhængigt uden tæt kobling. Dette mønster muliggør løs kobling, uafhængig skalering og fejlisolering.

Lambda som SQS-forbruger

Lambda kan konfigureres som en event source mapping for SQS. Lambda poller køen, henter op til en batchstørrelse af meddelelser (op til 10.000 for standardkøer og 10 for FIFO) og kalder funktionen én gang pr. batch. Hvis funktionen mislykkes, returneres hele batchen til køen. Konfigurér et batchvindue for at vente på flere meddelelser, før funktionen kaldes, så gennemløbet forbedres. Brug en DLQ på kilde-SQS-køen til meddelelser, der gentagne gange mislykkes.

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 enhver ændring på elementniveau (INSERT, MODIFY, REMOVE) som en ordnet sekvens af hændelser. Lambda læser fra streamen ved hjælp af en event source mapping med TRIM_HORIZON (start fra den ældste) eller LATEST (start fra den nyeste). Lambda behandler poster i rækkefølge inden for en partition. Mislykkede batches blokerer yderligere behandling af den samme partition, indtil problemet er løst – brug bisect on error til at opdele mislykkede batches 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åde som DynamoDB Streams – én samtidig eksekvering pr. shard. Vigtige konfigurationsmuligheder omfatter paralleliseringsfaktor (op til 10 samtidige Lambda-kald pr. shard, hvor underbatches behandles parallelt) og enhanced fan-out (dedikeret gennemløb på 2 MB/s pr. shard til Lambda-forbrugeren). Disse muligheder øger gennemløbet markant for streams med stor volumen uden at øge antallet af shards.

EventBridge som hændelsesrouter

Amazon EventBridge er den anbefalede hændelsesbus til at forbinde AWS-tjenester og brugerdefinerede applikationer. Hændelser strømmer ind i en bus, og regler filtrerer hændelser efter mønster og dirigerer dem til mål, herunder Lambda, SQS, Step Functions og flere. EventBridge afkobler producenter af hændelser fuldstændigt fra forbrugerne – ingen af dem kender til den anden. Den standardmæssige hændelsesbus modtager hændelser fra AWS-tjenester; opret en brugerdefineret hændelsesbus til hændelser fra din applikation.

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-funktioner

Et almindeligt hændelsesdrevet mønster er fan-out: én hændelse udløser flere parallelle behandlingspipelines. Publicér til et SNS-emne, hvorefter flere abonnementer på Lambda-funktioner reagerer uafhængigt. Når der f.eks. afgives en ordre, fordeles hændelsen til en Lambda, der sender en bekræftelsesmail, en Lambda, der opdaterer lagerbeholdningen, og en Lambda, der underretter lageret. Hver forbruger er uafhængig og skaleres separat – ingen enkelt forbruger kan blokere de andre.

Hurtigt tjek

Test din forståelse af AWS Solutions Architect-koncepterne (SAA-C03) fra denne lektion.

Opsummering af lektionen

I denne lektion lærte du, at Lambda@Edge kører funktioner på CloudFront edge locations med fire udløsningspunkter (viewer-forespørgsel/-svar og origin-forespørgsel/-svar) til opgaver som godkendelse, omskrivning af URL'er og manipulation af headere; at CloudFront Functions er det billigere alternativ med lavere latenstid til enkle transformationer på viewer-stadiet; samt at hændelsesdrevne mønstre ved hjælp af SQS, DynamoDB Streams, Kinesis, EventBridge og SNS-fan-out muliggør løst koblede arkitekturer, hvor Lambda reagerer på hændelser i realtid. Dernæst udforsker vi standard-SQS-køer sammenlignet med FIFO-køer.

Gratis at komme i gang

Lær Cloud & IT Cert Prep med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
150
Lektioner
600

Ofte stillede spørgsmål

Er lektionen “Lambda@Edge og hændelsesdrevne mønstre” gratis?

Ja — hele teksten til “Lambda@Edge og hændelsesdrevne mønstre” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Lambda@Edge og hændelsesdrevne mønstre”?

Kør funktioner på CloudFront Edge Locations, og forbind Lambda med SQS, SNS, DynamoDB Streams og Kinesis til hændelsesdrevne arkitekturer. Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?

Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Lambda@Edge og hændelsesdrevne mønstre”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

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

Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Lambda-funktioner: Runtimes, triggers og handlers
  2. Samtidighed, throttling og reserveret samtidighed
  3. Lambda-lag og deploymentpakker
  4. Lambda@Edge og hændelsesdrevne mønstre
← Tilbage til Cloud & IT Cert Prep