Lambda@Edge en event-driven patronen
Voer functies uit op CloudFront-edge locations en verbind Lambda met SQS, SNS, DynamoDB Streams en Kinesis voor event-driven architecturen.
Lambda@Edge en event-driven patronen is een gratis AWS Solutions Architect-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AWS Solutions Architect. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AWS Solutions Architect bevat in totaal 4 lessen.
Wat is Lambda@Edge
Met Lambda@Edge kun je Lambda-functies uitvoeren op CloudFront edge-locaties over de hele wereld, dichter bij eindgebruikers, in plaats van in een gecentraliseerde regio. Hierdoor kun je HTTP-aanvragen en -antwoorden aanpassen met minder dan een milliseconde extra latentie op de CDN-laag. Lambda@Edge-functies worden wereldwijd geïmplementeerd en aangeroepen bij elke gebeurtenis waarbij een CloudFront-cachetreffer of -misser optreedt. Daardoor zijn ze ideaal voor lichte taken waarbij aanvragen worden aangepast.
De vier triggerpunten van CloudFront
Lambda@Edge kan verkeer op vier punten in de levenscyclus van een CloudFront-aanvraag onderscheppen:
- Viewer Request: wordt geactiveerd wanneer CloudFront een aanvraag van de viewer (gebruiker) ontvangt, voordat de cache wordt gecontroleerd
- Origin Request: wordt geactiveerd wanneer CloudFront een cachemisser doorstuurt naar de origin
- Origin Response: wordt geactiveerd wanneer de origin een antwoord retourneert, voordat dit wordt gecachet
- Viewer Response: wordt geactiveerd voordat CloudFront het antwoord aan de viewer retourneert
Beperkingen van Lambda@Edge versus reguliere Lambda
Lambda@Edge heeft strengere limieten dan reguliere Lambda: maximaal 128 MB geheugen (viewer-gebeurtenissen), 1 GB (origin-gebeurtenissen), een maximale time-out van 5 seconden (viewer) en 30 seconden (origin). Functies moeten worden gemaakt in us-east-1 en via CloudFront naar edge-locaties worden geïmplementeerd. VPC's, omgevingsvariabelen en Lambda-lagen worden niet ondersteund. Door deze beperkingen is Lambda@Edge bedoeld voor lichte transformaties, niet voor zware verwerking.
Veelvoorkomende toepassingen van Lambda@Edge
Lambda@Edge is bijzonder geschikt voor: A/B-testen (URL's herschrijven naar verschillende origin-paden op basis van cookies), verificatie (JWT's aan de edge valideren voordat ze naar de origin worden doorgestuurd), aanpassen van HTTP-headers (beveiligingsheaders zoals HSTS, CSP en X-Frame-Options toevoegen), URL-normalisatie (www omleiden naar non-www of afsluitende schuine strepen afdwingen) en personalisatie (verschillende inhoud aanbieden op basis van het land van de viewer uit de 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 versus Lambda@Edge
CloudFront Functions zijn uiterst lichte JavaScript-functies die alleen tijdens de viewer-aanvraag- en viewer-antwoordfasen worden uitgevoerd, met een uitvoeringstijdlimiet van 2 ms en veel lagere kosten. Voor eenvoudige toepassingen (URL's herschrijven, headers aanpassen, cachesleutels normaliseren) hebben CloudFront Functions de voorkeur boven Lambda@Edge, omdat ze sneller en goedkoper zijn. Gebruik Lambda@Edge wanneer je netwerkoproepen of grotere ladingen nodig hebt, of wanneer je de triggerpunten voor origin-aanvragen en -antwoorden nodig hebt.
Gebeurtenisgestuurde architectuur met Lambda
Een gebeurtenisgestuurde architectuur verbindt diensten via gebeurtenissen: berichten die aangeven dat er iets is gebeurd. In AWS is Lambda de belangrijkste consument van gebeurtenissen: de dienst ontvangt gebeurtenissen uit SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge en meer. Elke gebeurtenis activeert een Lambda-uitvoering, waardoor systemen asynchroon en onafhankelijk kunnen reageren zonder sterke koppeling. Dit patroon maakt losse koppeling, onafhankelijk schalen en isolatie van fouten mogelijk.
Lambda als SQS-consument
Je kunt Lambda configureren als een toewijzing van een gebeurtenisbron voor SQS. Lambda ondervraagt de wachtrij, haalt maximaal een batchgrootte aan berichten op (maximaal 10.000 voor standaardwachtrijen en 10 voor FIFO) en roept de functie één keer per batch aan. Als de functie mislukt, wordt de hele batch teruggezet in de wachtrij. Configureer een batchvenster om te wachten op meer berichten voordat de functie wordt aangeroepen; dit verbetert de verwerkingscapaciteit. Gebruik een DLQ op de SQS-wachtrij als bron voor berichten die herhaaldelijk mislukken.
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 met DynamoDB Streams
DynamoDB Streams legt elke wijziging op itemniveau (INSERT, MODIFY, REMOVE) vast als een geordende reeks gebeurtenissen. Lambda leest uit de stream met een toewijzing van een gebeurtenisbron met TRIM_HORIZON (start bij het oudste item) of LATEST (start bij het nieuwste item). Lambda verwerkt records in volgorde binnen een partitie. Mislukte batches blokkeren verdere verwerking van dezelfde partitie totdat het probleem is opgelost. Gebruik bisect on error om mislukte batches op te splitsen en problematische records te isoleren.
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 met Kinesis Data Streams
Lambda verwerkt Kinesis-records op vergelijkbare wijze als DynamoDB Streams: één gelijktijdige uitvoering per shard. Belangrijke configuratieopties zijn onder andere de parallelisatiefactor (maximaal 10 gelijktijdige Lambda-aanroepen per shard, waarbij subbatches parallel worden verwerkt) en enhanced fan-out (een speciale verwerkingscapaciteit van 2 MB/s per shard voor de Lambda-consument). Deze opties verhogen de verwerkingscapaciteit voor streams met grote volumes aanzienlijk zonder het aantal shards te verhogen.
EventBridge als router voor gebeurtenissen
Amazon EventBridge is de aanbevolen gebeurtenisbus voor het verbinden van AWS-diensten en aangepaste toepassingen. Gebeurtenissen stromen naar een bus, waarna regels gebeurtenissen op basis van een patroon filteren en doorsturen naar doelen zoals Lambda, SQS, Step Functions en meer. EventBridge ontkoppelt producenten en consumenten van gebeurtenissen volledig: geen van beide hoeft iets van de ander te weten. De standaardgebeurtenisbus ontvangt gebeurtenissen van AWS-diensten; maak een aangepaste gebeurtenisbus voor de gebeurtenissen van je toepassing.
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-outpatroon: SNS naar meerdere Lambda-functies
Een veelgebruikt gebeurtenisgestuurd patroon is fan-out: één gebeurtenis activeert meerdere parallelle verwerkingsworkflows. Publiceer naar een SNS-topic en meerdere abonnementen van Lambda-functies reageren elk onafhankelijk. Zo kan een gebeurtenis voor een geplaatste bestelling worden verspreid naar: een Lambda-functie die een bevestigingsmail verstuurt, een Lambda-functie die de voorraad bijwerkt en een Lambda-functie die het magazijn op de hoogte brengt. Elke consument is onafhankelijk en schaalt afzonderlijk; geen enkele consument kan de andere blokkeren.
Korte toets
Toets je begrip van de concepten uit AWS Solutions Architect (SAA-C03) in deze les.
Samenvatting van de les
In deze les heb je geleerd dat Lambda@Edge functies uitvoert op CloudFront edge-locaties met vier triggerpunten (viewer-aanvraag/-antwoord en origin-aanvraag/-antwoord) voor taken zoals verificatie, URL's herschrijven en headers aanpassen; dat CloudFront Functions het goedkopere alternatief met een lagere latentie zijn voor eenvoudige transformaties tijdens de viewer-fase; en dat gebeurtenisgestuurde patronen met SQS, DynamoDB Streams, Kinesis, EventBridge en SNS-fan-out los gekoppelde architecturen mogelijk maken waarin Lambda reageert op realtime gebeurtenissen. Hierna bekijken we standaard- en FIFO-wachtrijen van SQS.
Leer AWS Solutions Architect met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Lambda@Edge en event-driven patronen” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad AWS Solutions Architect, waaronder “Lambda@Edge en event-driven patronen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus AWS Solutions Architect bevat in totaal 4 lessen.
Wat leer ik in “Lambda@Edge en event-driven patronen”?
Voer functies uit op CloudFront-edge locations en verbind Lambda met SQS, SNS, DynamoDB Streams en Kinesis voor event-driven architecturen. Je oefent met AWS Solutions Architect door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met AWS Solutions Architect te beginnen?
Ervaring vooraf is niet nodig. AWS Solutions Architect op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Lambda@Edge en event-driven patronen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over AWS Solutions Architect?
Ja. Elke les over AWS Solutions Architect bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Lambda-functies: runtimes, triggers en handlers
- Concurrency, throttling en reserved concurrency
- Lambda Layers en deployment packages
- Lambda@Edge en event-driven patronen