Lambda-funktioner: Körmiljöer, utlösare och hanterare
Skriv en Lambda-funktion, välj en körmiljö, konfigurera minne och timeout och koppla den till en S3-händelse eller en API Gateway-utlösare.
Lambda-funktioner: Körmiljöer, utlösare och hanterare är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Vad är AWS Lambda?
AWS Lambda är en serverlös beräkningstjänst som kör er kod som svar på händelser utan att ni behöver tillhandahålla eller hantera servrar. Ni betalar endast för den förbrukade beräkningstiden – mätt i millisekunder – vilket gör Lambda mycket kostnadseffektivt för sporadiska, händelsestyrda arbetsbelastningar. Lambda skalar automatiskt från noll till tusentals samtidiga körningar utifrån inkommande händelser.
Runtime-miljöer som stöds
Lambda stöder hanterade runtime-miljöer, bland annat Python, Node.js, Java, Go, Ruby, .NET och fler. AWS underhåller dessa runtime-miljöer och tillämpar säkerhetskorrigeringar. För språk eller runtime-versioner som inte stöds inbyggt kan ni tillhandahålla en Custom Runtime via en körbar bootstrap-fil eller paketera funktionen som en container image (upp till 10 GB) i stället för som ett ZIP-distributionspaket.
Lambda-handlerfunktionen
Varje Lambda-funktion har en handler – startpunkten som koden måste exportera. AWS anropar handlern med två argument: objektet event (indata från triggern) och ett context-objekt (metadata om anropet, till exempel funktionsnamn, återstående tid och begärande-ID). Handlern returnerar ett svar som, beroende på typen av anrop, kan returneras till anroparen.
# Python handler example
def lambda_handler(event, context):
# event contains the trigger payload
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
print(f'Processing {key} from {bucket}')
return {
'statusCode': 200,
'body': 'Processed successfully'
}Minne, tidsgräns och temporär lagring
Med Lambda kan ni konfigurera minne från 128 MB till 10 240 MB. CPU tilldelas proportionellt mot mängden minne – mer minne innebär mer CPU. Timeout kan ställas in från 1 sekund till 15 minuter. Om funktionen överskrider denna tid avslutar Lambda den. Ni får också temporär /tmp-lagring (512 MB som standard, konfigurerbar upp till 10 GB) för temporära filer under ett enskilt anrop. Denna lagring finns inte kvar mellan anrop.
Synkrona och asynkrona anrop
Lambda-funktioner kan anropas synkront (anroparen väntar på resultatet – används av API Gateway och ALB) eller asynkront (anroparen väntar inte – används av S3-händelser och SNS). I asynkront läge försöker Lambda köra misslyckade anrop igen upp till två gånger och kan dirigera misslyckade händelser till en Dead Letter Queue (SQS eller SNS) eller en EventBridge event bus. Valet av rätt anropsläge påverkar hur felhanteringen ska utformas.
Vanliga Lambda-triggers
Lambda integrerar inbyggt med dussintals AWS-tjänster som händelsekällor (triggers):
- API Gateway / ALB: HTTP-begäranden (synkront)
- S3: Händelser när objekt skapas eller tas bort (asynkront)
- DynamoDB Streams / Kinesis: Strömning av poster (pollningsbaserat, synkront)
- SQS: Meddelanden i kö (pollningsbaserat)
- SNS: Aviseringar från ämnen (asynkront)
- EventBridge: Schemalagda eller anpassade händelser
- CloudWatch Logs: Filter för loggprenumerationer
IAM-körningsroll
Varje Lambda-funktion måste ha en IAM-körningsroll som ger funktionen behörighet att anropa andra AWS-tjänster. Om funktionen till exempel läser från S3 och skriver till DynamoDB behöver körningsrollen behörigheterna s3:GetObject och dynamodb:PutItem. Följ principen om minsta privilegium: bevilja endast de behörigheter som funktionen faktiskt behöver. Den grundläggande körningsrollen måste också innehålla logs:CreateLogGroup, logs:CreateLogStream och logs:PutLogEvents för CloudWatch Logs.
Distributionspaket och storleksgränser
Lambda accepterar två distributionsformat: en ZIP-fil (50 MB komprimerad, 250 MB uppackad) som laddas upp direkt eller via S3, samt en container image (upp till 10 GB) som lagras i Amazon ECR. ZIP-paket distribueras snabbare och passar bra för små funktioner och Lambda Layers. Container images är idealiska för stora mängder beroenden eller för team som redan använder Docker-baserade arbetsflöden. Båda formaten kan använda samma runtime-miljöer och samma handler-mönster.
# Deploy a ZIP package from S3
aws lambda update-function-code \
--function-name 'MyFunction' \
--s3-bucket 'my-lambda-packages' \
--s3-key 'my-function-v2.zip'Miljövariabler och hemligheter
Skicka konfiguration till Lambda via miljövariabler. Känsliga värden, till exempel API-nycklar och databaslösenord, ska lagras i AWS Secrets Manager eller Parameter Store och hämtas när funktionen initieras (utanför handlern), så att ni kan dra nytta av återanvändning av exekveringskontexten. Hårdkoda aldrig hemligheter i funktionskoden och lagra dem aldrig i miljövariabler i klartext – använd KMS-kryptering för Lambdas miljövariabler för att skydda dem vid lagring.
import boto3
import os
# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
Name=os.environ['DB_PASSWORD_PARAM'],
WithDecryption=True
)['Parameter']['Value']
def lambda_handler(event, context):
# DB_PASSWORD is already loaded; no SSM call on each invocation
passKalla starter och återanvändning av exekveringskontext
Det första anropet av en Lambda-funktion efter distribution eller efter en period av inaktivitet medför en kall start: AWS måste initiera runtime-miljön, ladda ned distributionspaketet och köra initieringskoden. Efterföljande anrop i samma exekveringsmiljö är varma starter och går mycket snabbare. Placera global initieringskod (SDK-klienter, databasanslutningar) utanför handlern, så att exekveringskontexten kan återanvändas vid varma anrop.
Lambda i en VPC
Som standard körs Lambda i en AWS-hanterad VPC och kan komma åt internet, men inte era privata VPC-resurser. Om ni vill komma åt en RDS-databas eller ett ElastiCache-kluster i ett privat subnät konfigurerar ni Lambda så att den körs i er VPC genom att ange subnät och säkerhetsgrupper. VPC-aktiverade Lambda-funktioner använder Hyperplane ENI för nätverkstrafik (ingen separat ENI-etablering per funktion behövs längre), vilket eliminerar den historiska fördröjningen vid kalla starter för VPC-baserade Lambda-funktioner.
aws lambda update-function-configuration \
--function-name 'MyFunction' \
--vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'Snabbtest
Testa era kunskaper om AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har ni lärt er att Lambda-runtimes stöder Python, Node.js, Java, Go med flera, med anpassade runtimes och container images för avancerade användningsfall, att triggers som API Gateway (synkront) och S3/SNS (asynkront) styr hur händelser flödar in i Lambda-funktioner, samt att körningsrollen, miljövariabler och VPC-konfiguration är viktiga delar när Lambda ska anslutas säkert till andra AWS-tjänster. Härnäst utforskar vi Lambdas samtidighet, throttling och reserverad samtidighet.
Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 150
- Lektioner
- 600
Vanliga frågor
Är lektionen ”Lambda-funktioner: Körmiljöer, utlösare och hanterare” gratis?
Ja – hela texten till ”Lambda-funktioner: Körmiljöer, utlösare och hanterare” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Vad lär jag mig i ”Lambda-funktioner: Körmiljöer, utlösare och hanterare”?
Skriv en Lambda-funktion, välj en körmiljö, konfigurera minne och timeout och koppla den till en S3-händelse eller en API Gateway-utlösare. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?
Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Lambda-funktioner: Körmiljöer, utlösare och hanterare”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?
Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Lambda-funktioner: Körmiljöer, utlösare och hanterare
- Samtidighet, strypning och reserverad samtidighet
- Lambda Layers och distributionspaket
- Lambda@Edge och händelsestyrda mönster