Konfigurera Lambda-funktioner

Serverlösa applikationer med AWS Lambda

Claudio Canales

Senior DevOps Engineer

Varför konfiguration spelar roll

  • Samma kod kan bete sig väldigt olika med olika inställningar.
  • Konfiguration styr prestanda, kostnad och säkerhet.
  • Målet är förutsägbart beteende i dev och prod.

Samma kod, olika inställningar

Serverlösa applikationer med AWS Lambda

Kod vs konfiguration

Kodpaket

  • Kodpaket
  • Hanterarlogik + beroenden.
  • Ändringar kräver en driftsättning.

Funktionskonfiguration

  • Funktionskonfiguration
  • Minne, timeout och miljövariabler.
  • Exekveringsroll + lager.
Serverlösa applikationer med AWS Lambda

Inställningarna du styr

  • Runtime + handler: vilken kod Lambda kör.
  • Minne + timeout: prestanda, kostnad och säkerhet.
  • Miljövariabler: konfiguration utan hårdkodning.
  • Exekveringsroll: behörigheter för AWS-API:er.
  • Lager: delade beroenden mellan funktioner.

Konfigurationsreglage i Lambda

Serverlösa applikationer med AWS Lambda

Runtime och handler – grunderna

  • Runtime = språkmiljö (till exempel Python).
  • Handler = startpunkten som Lambda anropar.
  • Hanterarformat: file.function.
  • Exempel: lambda_function.lambda_handler.

Uppdelning av handlersträngen

Serverlösa applikationer med AWS Lambda

Handlersträngen – vad kan gå fel

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

Import och sedan handleranrop

Serverlösa applikationer med AWS Lambda

Exekveringsrollen (IAM)

  • IAM = Identity and Access Management (behörigheter).
  • Exekveringsrollen styr vad din funktion får göra.
  • Den avgör vilka AWS-API:er din kod kan anropa.

Exekveringsroll som passerkort

Serverlösa applikationer med AWS Lambda

Vad är ett Lambda-lager?

  • Ett lager är en ZIP-fil du kopplar till en funktion.
  • Lambda gör lagerfiler tillgängliga vid körning under /opt.
  • Använd lager för delade bibliotek och gemensamma verktyg.
  • Uppdatera lagret en gång; flera funktioner kan återanvända det.

Lager monterat under /opt

Serverlösa applikationer med AWS Lambda

Var lager visas vid körning

  • Din funktionskod är monterad under /var/task.
  • Dina kopplade lager är monterade under /opt.
  • Lambda tillhandahåller även en temporär mapp under /tmp.

Runtimemappar: /var/task, /opt, /tmp

Serverlösa applikationer med AWS Lambda

Minne påverkar även CPU

  • Mer minne -> mer CPU.
  • Kan minska körtid för CPU-bundna uppgifter.
  • Den totala kostnaden beror på både duration och minne.

Mer minne ökar CPU

Serverlösa applikationer med AWS Lambda

Finjustera minne med mätningar

  • Börja med ett rimligt standardvärde (till exempel 256 MB).
  • Testa med verklighetstrogna händelser.
  • Jämför duration och kostnad för olika minnesstorlekar.

Minnessökning: mät duration och kostnad

Serverlösa applikationer med AWS Lambda

Timeout och säker exekvering

  • Timeout stoppar körningar som löper iväg.
  • Kontrollera återstående tid innan lång bearbetning.
  • Misslyckas snabbt och försök igen när det är lämpligt.

Timeout som säkerhetstimer

Serverlösa applikationer med AWS Lambda

Genomgång: kontrollera återstående tid

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}

Tidsskydd med context-objekt

Serverlösa applikationer med AWS Lambda

Miljövariabler

  • Håll konfiguration utanför koden.
  • Separera inställningar för dev/test/prod.
  • Använd Secrets Manager för känsliga värden.

Miljövariabler styr beteendet

Serverlösa applikationer med AWS Lambda

Genomgång: läsa miljövariabler

import os

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

Standardvärden gör lokala tester säkrare

  • Importera os för att läsa miljövariabler.
  • os.getenv returnerar värdet eller ett standardvärde.
Serverlösa applikationer med AWS Lambda

Vanliga konfigurationsfallgropar

  • Hårdkodning av stagingvärden i koden.
  • För låg timeout eller saknade IAM-behörigheter.
  • Hemligheter i vanliga miljövariabler.

Fallgropar och tumregler

Serverlösa applikationer med AWS Lambda

Nu kör vi en övning!

Serverlösa applikationer med AWS Lambda

Preparing Video For Download...