AWS Solutions Architect · Lektion

Lambda Layers och distributionspaket

Samla gemensamma beroenden i återanvändbara Lambda Layers och hantera distributionspaket för stora körmiljöer.

Lektion 3 av 413 steg

Lambda Layers och distributionspaket är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AWS Solutions Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Beroendeproblemet i Lambda

Lambdas distributionspaket måste vara fristående – alla beroenden (bibliotek, SDK:er och binärfiler) måste inkluderas i ZIP-filen. Paketstorleken växer snabbt: en Python-funktion för datavetenskap med NumPy, Pandas och SciPy kan överstiga 200 MB uppackad. Varje uppdatering av funktionskoden kräver att hela paketet laddas upp igen, inklusive oförändrade bibliotek. Lambda Layers löser detta genom att separera delade beroenden från funktionskoden.

Vad är ett Lambda-lager?

Ett Lambda-lager är ett ZIP-arkiv som innehåller bibliotek, anpassade runtime-miljöer, data eller konfigurationsfiler. Lager lagras separat från funktionskoden och monteras i funktionens körningsmiljö på /opt. Flera funktioner kan dela samma lager – uppdatera lagret en gång så drar alla funktioner som använder det nytta av uppdateringen. Varje Lambda-funktion kan ha upp till 5 lager, och den sammanlagda storleken efter uppackning måste vara mindre än 250 MB.

Skapa och publicera ett lager

Om du vill skapa ett lager paketerar du beroendena i rätt katalogstruktur för din runtime (till exempel python/lib/python3.12/site-packages/ för Python), komprimerar dem till en ZIP-fil och publicerar den. När lagret har publicerats får det ett version-ARN. Referera till detta ARN när du kopplar lagret till en funktion. En ny version skapas varje gång du uppdaterar lagret. Funktionerna fortsätter att använda den version som de konfigurerades med tills du uttryckligen uppdaterar dem.

# Build layer for Python
mkdir -p layer/python
pip install pandas numpy -t layer/python/
cd layer && zip -r ../my-data-layer.zip python/

# Publish the layer
aws lambda publish-layer-version \
  --layer-name 'DataScienceLayer' \
  --zip-file fileb://my-data-layer.zip \
  --compatible-runtimes python3.12 python3.11

Koppla lager till en funktion

Lägg till lager i en funktion med parametern --layers när du skapar eller uppdaterar en funktion. Lambda monterar alla kopplade lager i /opt innan funktionen startar. Python-paket under /opt/python finns automatiskt i Pythons sökväg, och Node.js-moduler under /opt/nodejs/node_modules hittas automatiskt. Funktionskoden kan import-era eller require-a paket från lager som om de vore installerade lokalt.

aws lambda update-function-configuration \
  --function-name 'DataProcessor' \
  --layers \
    'arn:aws:lambda:us-east-1:123456789012:layer:DataScienceLayer:3' \
    'arn:aws:lambda:us-east-1:123456789012:layer:UtilsLayer:1'

Offentliga lager från AWS

AWS publicerar officiella lager som du kan använda utan att bygga egna. Exempel är lagret AWS Lambda Powertools (strukturerad loggning, spårning och funktionsflaggor), lager med datab asdrivrutiner samt lagret AWS Parameters and Secrets Lambda Extension för lokal cachning av värden från SSM/Secrets Manager. Tredjepartsleverantörer som Datadog och New Relic publicerar också offentliga lager för sina övervakningsagenter. Kontrollera Serverless Application Repository och Lambda-konsolen för tillgängliga offentliga lager.

Lambda-tillägg via lager

Lambda Extensions körs som separata processer bredvid funktionskoden i samma körningsmiljö. De kopplar in sig på Lambdas livscykelhändelser (initiering, anrop och avstängning) för att utföra uppgifter som insamling av telemetri, säkerhetsskanning eller cachning av konfiguration. Tillägg distribueras som Lambda-lager. AWS tillhandahåller tilläggen CloudWatch Lambda Insights och AWS AppConfig, och leverantörer tillhandahåller anpassade övervakningsagenter som tillägg.

Distributionspaketens format: ZIP eller container

Lambda stöder två distributionsformat:

  • ZIP (upp till 50 MB komprimerat och 250 MB efter uppackning): snabb uppladdning, stöd för lager och fungerar med alla runtime-miljöer.
  • Container Image (upp till 10 GB): lagras i Amazon ECR, använder standardverktyg för Docker, saknar stöd för lager och passar bra för mycket stora beroenden (ML-modeller och stora binärfiler).

Containeravbildningar måste implementera Lambda Runtime Interface (med hjälp av basavbildningarna som AWS tillhandahåller) så att Lambda vet hur din hanterare ska anropas.

# Dockerfile for a Lambda container image
FROM public.ecr.aws/lambda/python:3.12
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ['app.lambda_handler']

Arbetsflöde för containeravbildningar

Att bygga och distribuera en Lambda-containeravbildning följer ett standardiserat containerarbetsflöde: bygg med docker build, skicka avbildningen till Amazon ECR och ange avbildningens URI när du skapar eller uppdaterar Lambda-funktionen. Containeravbildningar är oföränderliga – varje avbildningstagg motsvarar en specifik funktionsversion. Lambda cachar containeravbildningar i sin infrastruktur, så efterföljande kalla starter går snabbare än den första.

# Build and push to ECR
docker build -t my-lambda-function .
aws ecr get-login-password | docker login --username AWS \
  --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
docker tag my-lambda-function \
  123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest

Versionshantering och alias

Lambdas versioner är oföränderliga ögonblicksbilder av funktionskoden och konfigurationen. Varje gång du publicerar en version låser Lambda distributionspaketet, miljövariablerna och lagren. Alias är namngivna pekare till specifika versioner – prod kan exempelvis peka på version 5 och staging på version 6. Du kan även använda viktade alias för att dirigera en procentandel av trafiken till en ny version vid canary-distributioner (till exempel 10 % till v6 och 90 % till v5).

# Publish a version and create/update an alias
aws lambda publish-version --function-name 'DataProcessor'
# Returns version number, e.g., "Version": "7"

aws lambda update-alias \
  --function-name 'DataProcessor' \
  --name 'prod' \
  --function-version '7' \
  --routing-config 'AdditionalVersionWeights={"6": 0.1}'

Versionshantering och utfasning av lager

Lager versionshanteras också. När du publicerar en ny lagerversion fortsätter befintliga funktioner att använda sin låsta version tills du uppdaterar dem. Det innebär att du säkert kan uppdatera ett delat lager utan att bryta alla funktioner samtidigt – distribuera den nya versionen stegvis. Så småningom bör du fasa ut gamla lagerversioner för att minska lagrings- och underhållsbehovet. Lambda behåller lagerversioner även om du tar bort dem från konsolen, tills ingen funktion längre refererar till dem.

Välja mellan lager och containeravbildningar

Använd lager när den totala storleken efter uppackning understiger 250 MB, när du vill dela beroenden mellan flera funktioner och när du vill kunna iterera snabbt (uppdatera lagret en gång så drar alla funktioner nytta av det). Använd containeravbildningar när beroendena överstiger 250 MB, när du behöver använda anpassade OS-paket, när du redan har Docker-arbetsflöden eller när du vill paketera stora tillgångar (ML-modeller och referensdatabaser). Containeravbildningar är inte kompatibla med Lambda-lager, men ger större flexibilitet.

Snabbtest

Testa dina kunskaper om begreppen AWS Solutions Architect (SAA-C03) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har du lärt dig att Lambda-lager paketerar delade beroenden separat från funktionskoden, vilket minskar paketstorleken och möjliggör återanvändning mellan flera funktioner, att containeravbildningar (upp till 10 GB via ECR) är rätt val när beroendena överstiger ZIP-gränsen på 250 MB eller när Docker-arbetsflöden redan används, samt att versionshantering och alias möjliggör oföränderliga releaser och canary-distributioner med viktad trafikfördelning. Härnäst utforskar vi Lambda@Edge och händelsestyrda mönster.

Gratis att börja

Lär dig AWS Solutions Architect 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
30
Lektioner
120

Vanliga frågor

Är lektionen ”Lambda Layers och distributionspaket” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”Lambda Layers och distributionspaket”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Vad lär jag mig i ”Lambda Layers och distributionspaket”?

Samla gemensamma beroenden i återanvändbara Lambda Layers och hantera distributionspaket för stora körmiljöer. Ni övar på AWS Solutions Architect 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 AWS Solutions Architect?

Du behöver inga förkunskaper. Utbildningen i AWS Solutions Architect 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 3 av 4.

Hur lång tid tar lektionen ”Lambda Layers och distributionspaket”?

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 AWS Solutions Architect-lektionen?

Ja. Varje AWS Solutions Architect-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

  1. Lambda-funktioner: Körmiljöer, utlösare och hanterare
  2. Samtidighet, strypning och reserverad samtidighet
  3. Lambda Layers och distributionspaket
  4. Lambda@Edge och händelsestyrda mönster
← Tillbaka till AWS Solutions Architect