Cursus
AWS Lambda is een krachtige serverloze compute-service waarmee je code kunt draaien zonder infrastructuur te beheren, zodat je je volledig kunt richten op het schrijven van code zonder je zorgen te maken over het inrichten of onderhouden van servers.
In deze tutorial verkennen we AWS Lambda, van het opzetten van je eerste functie tot het integreren met andere AWS-services. Of je nu datastromen verwerkt of API’s bouwt, deze gids helpt je op weg met serverloze deployments met AWS Lambda.
Wat is AWS Lambda?
AWS Lambda is een serverloos computingplatform van Amazon Web Services (AWS) waarmee ontwikkelaars code kunnen uitvoeren zonder servers in te richten of te beheren. AWS Lambda faciliteert dit door dynamisch resources toe te wijzen om je functies alleen uit te voeren wanneer dat nodig is, waarbij je wordt afgerekend op basis van gebruik in plaats van vooraf gereserveerde servercapaciteit.
Deze aanpak voor applicatieontwikkeling haalt de noodzaak weg van traditionele infrastructuursetup, zodat je je volledig kunt richten op het schrijven en deployen van code.
AWS Lambda is event-gedreven, wat betekent dat het wordt getriggerd door specifieke events van andere AWS-services. Dit maakt het ideaal voor het bouwen van responsieve, schaalbare en kostenefficiënte oplossingen.
Traditionele deploymethoden vereisen het opzetten en beheren van servers, inclusief schalen, updaten en patchen. Deze taken kunnen tijdrovend en kostbaar zijn en minder efficiënt voor onregelmatige workloads. Daarentegen elimineert serverloze deployment deze overhead, met automatische schaalbaarheid en hoge beschikbaarheid out-of-the-box.
Functies van AWS Lambda
- Event-gedreven architectuur: AWS Lambda-functies worden aangeroepen naar aanleiding van events zoals wijzigingen in data, HTTP-verzoeken of updates aan AWS-resources.
- Ondersteuning voor meerdere runtimes: Lambda ondersteunt verschillende runtimes, waaronder Python, Node.js, Java, Go, Ruby en .NET. Ontwikkelaars kunnen ook hun eigen runtime meenemen via de AWS Lambda Runtime API, wat het een veelzijdig platform maakt voor diverse use-cases.
- Automatische schaalbaarheid: AWS Lambda schaalt je applicatie automatisch op basis van de vraag. Of je nu één event verwerkt of er duizenden tegelijk afhandelt, Lambda past de compute-resources dynamisch aan.
- Pay-as-you-go-prijzen: De kosten worden bepaald door het aantal requests en de uitvoeringstijd van je functies. Dit elimineert de noodzaak van voorafgaande investeringen en zorgt dat je alleen betaalt voor wat je gebruikt.
- Geïntegreerde beveiliging: Lambda workt met AWS Identity and Access Management (IAM), wat zorgt voor fijnmazige toegangscontrole en veilige interacties tussen je functies en andere AWS-services.
Veelvoorkomende use-cases van Lambda
- Verwerken van datastreams: AWS Lambda integreert met Amazon Kinesis om streamingdata in realtime te verwerken en te analyseren. Zo kun je IoT-apparaten monitoren of logbestanden dynamisch verwerken.
- Bouwen van RESTful API’s: Lambda-functies kunnen worden gekoppeld aan AWS API Gateway om schaalbare API’s te maken voor web- en mobiele applicaties. Deze setup wordt vaak gebruikt om gebruikersauthenticatie af te handelen, databases te bevragen of dynamische content te genereren.
- Workflows automatiseren: Automatiseer complexe workflows door Lambda-functies te triggeren op basis van events uit services zoals S3, DynamoDB of CloudWatch. Bijvoorbeeld: afbeeldingen die naar S3 zijn geüpload automatisch verkleinen of oude databaserecords archiveren.
- Eventafhandeling in datapijplijnen: Je kunt Lambda gebruiken om realtime data-events af te handelen, zoals het verwerken van nieuwe uploads in een S3-bucket, data transformeren vóór opslag of datastreams verrijken met externe API-calls.
- Serverloze backendverwerking: Lambda wordt vaak gebruikt om backendtaken uit te besteden zoals datavalidatie, ETL (Extract, Transform, Load)-processen, of het versturen van notificaties via Amazon SNS of SES.
Hoe werkt AWS Lambda?
AWS Lambda werkt volgens een event-gedreven model, wat betekent dat het code uitvoert als reactie op specifieke triggers of events. De sleutel tot de functionaliteit van Lambda is de integratie met andere AWS-services en het vermogen om functies on demand uit te voeren. Laten we stap voor stap inzoomen op de werking van AWS Lambda:

Een voorbeeld van een architectuurdiagram met Lambda en andere kernservices van AWS. Beeldbron: AWS.
1. Lambda-functies triggeren
AWS Lambda-functies worden gestart door events van verschillende AWS-services of externe systemen. Veelvoorkomende voorbeelden van eventbronnen zijn:
- API Gateway: Wanneer een gebruiker een HTTP-verzoek (bijv. een GET- of POST-verzoek) naar je API Gateway-endpoint stuurt, kan Lambda een functie uitvoeren om het verzoek te verwerken—bijvoorbeeld een RESTful API-endpoint om een gebruiker in een database aan te maken.
- S3-events: Lambda-functies kunnen reageren op acties zoals het uploaden, verwijderen of wijzigen van een object in een S3-bucket. Zo kunnen ze afbeeldingen verkleinen of bestandsformaten converteren nadat een afbeelding naar een S3-bucket is geüpload.
- DynamoDB-streams: Alle wijzigingen in DynamoDB-tabellen, zoals inserts, updates of deletions, kunnen een Lambda-functie triggeren. Bijvoorbeeld het starten van een analytics-pijplijn wanneer er nieuwe rijen aan een DynamoDB-tabel worden toegevoegd.
- Aangepaste applicaties: Je kunt Lambda-functies direct aanroepen via SDK’s, CLI of HTTP-verzoeken, zodat je kunt integreren met externe systemen.
2. Uitvoeringsomgeving
Wanneer een event een Lambda-functie triggert, maakt AWS automatisch een uitvoeringsomgeving om de code te draaien. Deze omgeving bevat:
- Je functiecode: De code die je hebt geschreven voor je specifieke taak.
- Toegewezen resources: CPU en geheugen (configureerbaar) worden dynamisch toegewezen op basis van de behoeften van de functie.
- Afhankelijkheden: Alle externe libraries of pakketten die tijdens deployment zijn opgegeven, worden meegenomen.
3. Gelijktijdigheid en schalen
AWS Lambda ondersteunt automatische schaalbaarheid door meerdere instanties van je functie parallel te draaien. Het beheer van schaalbaarheid gebeurt transparant zonder extra configuratie. Zo werkt gelijktijdigheid:
- Als je functie 100 events tegelijk moet verwerken, maakt Lambda zoveel uitvoeringsomgevingen aan als nodig (tot aan de gelijktijdigheidslimiet).
4. Integratie met andere AWS-services
AWS Lambda integreert diepgaand met AWS-services om robuuste end-to-endoplossingen te bouwen:
- Database-interacties: Lambda kan tijdens uitvoering data lezen/schrijven naar DynamoDB of RDS.
- Messagingservices: Lambda kan notificaties triggeren via SNS of berichten sturen naar SQS-queues voor downstreamverwerking.
- Monitoring en logging: CloudWatch legt alle logs, metrics en foutdetails vast voor Lambda-functies, zodat je prestaties kunt monitoren en problemen oplossen.
Laten we nu aan de slag gaan met het opzetten van je eerste Lambda-functie!
AWS Lambda instellen
Vereisten
- AWS-account: Zorg dat je een actief AWS-account hebt. Meld je hier aan.
- IAM-gebruiker instellen: Maak een IAM-gebruiker met rechten voor AWS Lambda. Volg de IAM-gids.
De ontwikkelomgeving instellen
- AWS CLI installeren: Download en installeer de AWS CLI. Configureer deze met je IAM-inloggegevens.
- Python of Node.js instellen: Installeer Python of Node.js op basis van je favoriete runtime. AWS Lambda ondersteunt meerdere runtimes. In deze tutorial gebruiken we de Python-runtime.
Stap 1: Ga naar de AWS Lambda-console
- Log in op de AWS Management Console.
- Navigeer naar de Lambda-service.

Navigatiedashboard in de AWS-console.
Klik op Lambda in het navigatiemenu om het dashboard te zien:

AWS Lambda-dashboard in de AWS-console.
Stap 2: Maak een nieuwe functie
- Klik op Create Function.
- Kies “Author from Scratch”.
- Geef een naam op voor je functie.
- Selecteer een runtime (bijv. Python 3.11).
- Klik op de knop Create Function.

Maak een nieuwe AWS Lambda-functie.
Dit duurt een paar seconden. Zodra de functie is aangemaakt, zie je bovenaan een succesmelding.
Stap 3: Schrijf je functielogica

AWS Lambda browser-IDE voor eenvoudig code bewerken.
Stap 4: Test je Lambda-functie
Op dit punt retourneert deze functie alleen de string “Hello from Lambda!”.
Er is geen logica, geen afhankelijkheden, niets.
We hebben een Python-script genaamd lambda_function.py dat de functie lambda_handler() bevat, die een string retourneert.
We kunnen het nu testen door simpelweg op de knop Test te klikken.

Test je AWS Lambda-functie in de browser.
Je kunt de “Event JSON” weghalen, want onze functie neemt geen input aan. Geef een eventnaam en klik op de knop Invoke.

Geslaagde test van AWS Lambda-functie.
De functie is succesvol uitgevoerd en het bericht is geretourneerd.
Yay! We hebben zojuist een serverloze functie gedeployed met AWS Lambda. Hij doet nu nog niet veel, maar hij draait. Elke keer dat deze functie wordt aangeroepen, retourneert hij een eenvoudige string.
Lambda triggeren met events
Zoals gezegd maakt de AWS Lambda-architectuur het mogelijk om functies te triggeren als reactie op specifieke events van verschillende AWS-services, waardoor het een veelzijdig hulpmiddel is om workflows te automatiseren en systemen te integreren.
Events zoals bestandsuploads naar een S3-bucket, updates in een DynamoDB-tabel of API-calls via API Gateway kunnen Lambda-functies aanroepen, wat realtime verwerking en schaalbare uitvoering mogelijk maakt.
1. Een S3-trigger instellen
- Ga naar de S3-console.
- Selecteer de S3-bucket.
- Voeg onder Properties een eventmelding toe om je Lambda-functie te triggeren bij het aanmaken van een object.
Eventmelding aanmaken in de AWS S3-bucket.
Selecteer de Lambda-functie om te triggeren in S3.
Voorbeelden van use-cases:
-
- Afbeeldingen die naar S3 zijn geüpload automatisch verkleinen.
- Video’s converteren naar meerdere resoluties of formaten voor streaming.
- Bestandsformaten, -groottes of metadata controleren bij uploaden.
- AI gebruiken om tekst uit geüploade documenten te halen (bijv. via Amazon Textract).
2. API Gateway-integratie
- Navigeer naar de API Gateway-service.

Het API Gateway Service-dashboard in de AWS-console.
- Maak een nieuwe REST API.

Maak een nieuwe REST API via API Gateway.
- Configureer een methode (bijv. POST) om je Lambda-functie te triggeren.
Voorbeelden van use-cases:
-
- Bouw een serverloze API voor realtime reacties.
- Trigger een Lambda-functie om gebruikersdata aan te maken en op te slaan in een database.
- Verwerk POST-verzoeken om klantbestellingen in realtime te verwerken en te valideren.
- Trigger een Lambda-functie om data uit een database of API op te vragen en te retourneren.
AWS Lambda deployen en monitoren
Het deployen van AWS Lambda-functies is eenvoudig en kan op verschillende manieren, afhankelijk van je behoeften: via de AWS Management Console voor handmatige deployments of via de AWS CLI voor geautomatiseerde deployments.
1. Handmatige deployment via de AWS-console
De AWS Management Console biedt een intuïtieve webinterface voor het deployen van Lambda-functies. Deze methode is ideaal voor kleine projecten of snelle wijzigingen. Zo deploy je een Lambda-functie via de console:
- Maak of bewerk een functie:
- Log in op de AWS Management Console.
- Navigeer naar AWS Lambda.
- Klik op Create Function om een nieuwe functie te maken of selecteer een bestaande functie om te updaten.
- Upload je code:
- Kies Upload from en selecteer .zip-bestand of containerimage.
- Je kunt je functiecode direct bewerken in de geïntegreerde code-editor voor kleinschalige ontwikkeling.
- Configureer de functie:
- Definieer omgevingsvariabelen, geheugenallocatie en timeoutlimieten op basis van je use-case.
- Voeg de benodigde permissies toe met AWS IAM-rollen zodat de functie met andere AWS-services kan communiceren.
- Deploy de wijzigingen:
- Klik op Deploy om je wijzigingen op te slaan en te activeren.
- Gebruik de Test-functie om de functie handmatig aan te roepen en te valideren dat deze werkt zoals verwacht.
2. Geautomatiseerde deployment met de AWS CLI
De AWS CLI is een efficiënte manier om Lambda-functies te deployen en updaten voor automatisering of frequente updates. Het zorgt voor consistentie en vermindert handmatige fouten, vooral in grotere projecten of CI/CD-pijplijnen.
Stap 1 - Bereid het deploymentpakket voor
Verpak je code en afhankelijkheden in een .zip-bestand. Bijvoorbeeld:
zip -r my-deployment-package.zip .
Stap 2 - Deploy de functie met de CLI
Gebruik het commando update-function-code om de nieuwe code naar AWS Lambda te uploaden:
aws lambda update-function-code \
--function-name MyFunction \
--zip-file fileb://my-deployment-package.zip
Stap 3 - Controleer de deployment
Controleer na de deployment de status van de functie met:
aws lambda get-function --function-name MyFunction
Dit commando haalt de configuratie van de functie op en bevestigt de deployment.
Lambda monitoren met CloudWatch
Monitoring is cruciaal om ervoor te zorgen dat je Lambda-functies efficiënt draaien, fouten soepel afhandelen en aan performanceverwachtingen voldoen. AWS Lambda integreert met Amazon CloudWatch om monitoring- en loggingmogelijkheden te bieden.
Amazon CloudWatch verzamelt en toont automatisch kernmetrics voor je Lambda-functies. Deze metrics helpen je de prestaties van je functie te analyseren en problemen op te lossen.
Te monitoren metrics:
- Invocations: Houdt bij hoe vaak je functie wordt aangeroepen. Helpt je verkeerspatronen en gebruikstrends te begrijpen.
- Errors: Toont het aantal fouten tijdens de uitvoering van de functie. Gebruik dit om faalpercentages te identificeren en problemen te debuggen.
- Duration: Meet de tijd die nodig is om de functie uit te voeren. Dit is cruciaal voor performance-optimalisatie en kostenbeheer.
- Throttles: Laat het aantal aanroepen zien dat is afgeremd door het bereiken van gelijktijdigheidslimieten.
Metrics openen:
- Navigeer naar de CloudWatch Metrics Console.
- Selecteer Lambda uit de lijst met namespaces.
- Kies de functie die je wilt monitoren om gedetailleerde metrics te bekijken.
Best practices voor AWS Lambda
Nu je je eerste Lambda-functie hebt gedeployed, is het handig om enkele best practices te kennen voor toekomstige, complexere projecten. In deze sectie geef ik een paar best practices om in gedachten te houden.
1. Optimaliseer cold starts van functies
Cold starts treden op wanneer een Lambda-functie wordt aangeroepen na inactiviteit, wat leidt tot lichte latency terwijl AWS de uitvoeringsomgeving inricht. Hoewel AWS deze overhead minimaliseert, kun je stappen nemen om de cold start-tijd te verkorten:
Gebruik kleinere deploymentpakketten
- Houd je deploymentpakket lichtgewicht door alleen noodzakelijke afhankelijkheden op te nemen.
- Gebruik tools zoals AWS Lambda Layers om gemeenschappelijke libraries (bijv. AWS SDK) te delen tussen functies zonder ze in elk pakket op te nemen.
- Comprimeer en minify code waar mogelijk, vooral voor JavaScript- of Python-functies.
Vermijd zware initialisatie in je functie
Verplaats resource-intensieve initialisatie (bijv. databaseconnecties, API-clients of third-party libraries) buiten de function handler. Zo wordt de code slechts één keer per omgeving uitgevoerd en hergebruikt over aanroepen heen.
Maak gebruik van provisioned concurrency
Voor kritieke, latency-gevoelige functies gebruik je Provisioned Concurrency om de uitvoeringsomgeving klaar te houden voor requests. Dit levert extra kosten op, maar garandeert lage latency voor high-priority workloads.
2. Houd functies stateless
Statelessness is een fundamenteel principe van serverloze architectuur en zorgt dat je applicatie naadloos kan schalen:
Vermijd afhankelijkheid van in-memory data
Lambda-functies zijn vluchtig: hun uitvoeringsomgeving is tijdelijk en blijft mogelijk niet bestaan tussen aanroepen. Sla state-informatie daarom extern op, bijvoorbeeld in DynamoDB, S3 of Redis, in plaats van te vertrouwen op in-memory variabelen.
Maak functies idempotent
Ontwerp je functies zo dat ze dubbele events netjes afhandelen. Gebruik unieke identifiers voor requests en controleer logs of databases om te voorkomen dat hetzelfde event meerdere keren wordt verwerkt.
3. Gebruik omgevingsvariabelen
Omgevingsvariabelen zijn een veilige en handige manier om je Lambda-functies te configureren:
Sla gevoelige informatie op
- Sla API-sleutels, database-connection strings en andere secrets op als omgevingsvariabelen. AWS Lambda versleutelt deze variabelen in rust en ontsleutelt ze tijdens uitvoering.
- Gebruik voor extra veiligheid AWS Secrets Manager of Systems Manager Parameter Store om secrets dynamisch te beheren.
Vereenvoudig configuratiebeheer
Gebruik omgevingsvariabelen om configuraties zoals logniveaus, regiokinstellingen of URL’s van derden te beheren. Dit voorkomt hardcoded waarden en maakt je functie beter overdraagbaar tussen omgevingen (bijv. dev, staging, prod).
Conclusie
Deze tutorial bood een gids om te starten met AWS Lambda, van het begrijpen van de functies en use-cases tot het effectief deployen en monitoren van functies. Door best practices te volgen—zoals het optimaliseren van cold starts, functies stateless houden en omgevingsvariabelen gebruiken—kun je robuuste en onderhoudbare serverloze applicaties bouwen.
AWS Lambda is een manier om moderne, event-gedreven architecturen te bouwen die integreren met het AWS-ecosysteem. Als je er meer over wilt leren, raaad ik aan om de AWS-cursussen van DataCamp te bekijken.

