Lambda-functies configureren

Serverless-toepassingen met AWS Lambda

Claudio Canales

Senior DevOps Engineer

Waarom configuratie telt

  • Dezelfde code kan anders werken met andere instellingen.
  • Configuratie stuurt performance, kosten en veiligheid.
  • Doel: voorspelbaar gedrag in dev en prod.

Dezelfde code, andere instellingen

Serverless-toepassingen met AWS Lambda

Code vs. configuratie

Codepakket

  • Codepakket
  • Handlerlogica + dependencies.
  • Wijzigingen vereisen een deploy.

Functieconfiguratie

  • Functieconfiguratie
  • Geheugen, timeout, omgevingsvariabelen.
  • Execution role + layers.
Serverless-toepassingen met AWS Lambda

De knoppen die je bedient

  • Runtime + handler: welke code Lambda draait.
  • Geheugen + timeout: performance, kosten, veiligheid.
  • Omgevingsvariabelen: configuratie zonder hardcoden.
  • Execution role: rechten voor AWS-API's.
  • Layers: gedeelde dependencies tussen functies.

Lambda-configuratieknoppen

Serverless-toepassingen met AWS Lambda

Basis van runtime en handler

  • Runtime = taalomgeving (bijv. Python).
  • Handler = het startpunt dat Lambda aanroept.
  • Handler-formaat: file.function.
  • Voorbeeld: lambda_function.lambda_handler.

Uitleg van de handlerstring

Serverless-toepassingen met AWS Lambda

Handlerstring: wat kan misgaan

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

Import en daarna handler-aanroep

Serverless-toepassingen met AWS Lambda

De execution role (IAM)

  • IAM = Identity and Access Management (rechten).
  • De execution role bepaalt wat je functie mag doen.
  • Het regelt welke AWS-API's je code mag aanroepen.

Execution role als toegangsbadge

Serverless-toepassingen met AWS Lambda

Wat is een Lambda-layer?

  • Een layer is een ZIP die je aan een functie koppelt.
  • Lambda stelt layer-bestanden beschikbaar bij runtime onder /opt.
  • Gebruik layers voor gedeelde libraries en utilities.
  • Update de layer één keer; meerdere functies hergebruiken 'm.

Layer gemount onder /opt

Serverless-toepassingen met AWS Lambda

Waar layers zichtbaar zijn bij runtime

  • Je functiebestand staat onder /var/task.
  • Je gekoppelde layers staan onder /opt.
  • Lambda biedt ook een tijdelijke map op /tmp.

Runtime-mappen: /var/task, /opt, /tmp

Serverless-toepassingen met AWS Lambda

Geheugen beïnvloedt ook CPU

  • Meer geheugen -> meer CPU.
  • Kan runtime verlagen voor CPU-bound taken.
  • Totale kosten hangen af van duur én geheugen.

Geheugen verhoogt CPU

Serverless-toepassingen met AWS Lambda

Geheugen tunen met metingen

  • Begin met een redelijke default (bijv. 256 MB).
  • Test met realistische events.
  • Vergelijk duur en kosten bij verschillende geheugens.

Geheugensweep: meet duur en kosten

Serverless-toepassingen met AWS Lambda

Timeouts en veilig uitvoeren

  • Timeout stopt doorgeslagen executies.
  • Check resterende tijd vóór lang werk.
  • Snel falen en zo nodig opnieuw proberen.

Timeout als veiligheidstimer

Serverless-toepassingen met AWS Lambda

Walkthrough: resterende tijd checken

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Context-countdownbeveiliging

Serverless-toepassingen met AWS Lambda

Omgevingsvariabelen

  • Houd config uit je code.
  • Scheid dev/test/prod-instellingen.
  • Gebruik Secrets Manager voor gevoelige waarden.

Omgevingsvariabelen sturen gedrag

Serverless-toepassingen met AWS Lambda

Walkthrough: omgevingsvariabelen lezen

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Defaults maken lokale tests veiliger

  • Importeer os om omgevingsvariabelen te lezen.
  • os.getenv geeft de waarde of de default terug.
Serverless-toepassingen met AWS Lambda

Veelvoorkomende configuratievalkuilen

  • Stage-waarden hardcoden in code.
  • Timeout te laag of ontbrekende IAM-rechten.
  • Secrets in platte omgevingsvariabelen.

Valkuilen en vuistregels

Serverless-toepassingen met AWS Lambda

Laten we oefenen!

Serverless-toepassingen met AWS Lambda

Preparing Video For Download...