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.
Lambda@Edge og hændelsesdrevne mønstre er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-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 5Lambda 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-errorLambda 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.
Lær AWS Solutions Architect 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
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Lambda@Edge og hændelsesdrevne mønstre” gratis?
Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “Lambda@Edge og hændelsesdrevne mønstre”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-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 AWS Solutions Architect 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å AWS Solutions Architect?
Der kræves ingen tidligere erfaring. AWS Solutions Architect 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 AWS Solutions Architect-lektion?
Ja. Alle AWS Solutions Architect-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
- Lambda-funktioner: Runtimes, triggers og handlers
- Samtidighed, throttling og reserveret samtidighed
- Lambda-lag og deploymentpakker
- Lambda@Edge og hændelsesdrevne mønstre