Lambda Layers e pacchetti di deployment
Raggrupperete le dipendenze condivise in Lambda Layers riutilizzabili e gestirete i pacchetti di deployment per i runtime di grandi dimensioni.
Lambda Layers e pacchetti di deployment è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Il problema delle dipendenze in Lambda
I pacchetti di distribuzione Lambda devono essere autonomi: tutte le dipendenze (librerie, SDK, binari) devono essere incluse nel file ZIP. Le dimensioni del pacchetto aumentano rapidamente: una funzione Python per la data science con NumPy, Pandas e SciPy può superare i 200 MB non compressi. Ogni aggiornamento al codice della funzione richiede il nuovo caricamento dell'intero pacchetto, comprese le librerie invariate. I Lambda Layers risolvono questo problema separando le dipendenze condivise dal codice della funzione.
Che cos'è un Lambda Layer?
Un Lambda Layer è un archivio ZIP che contiene librerie, runtime personalizzati, dati o file di configurazione. I layer vengono archiviati separatamente dal codice della funzione e montati nell'ambiente di esecuzione della funzione in /opt. Più funzioni possono condividere lo stesso layer: è sufficiente aggiornare il layer una volta perché tutte le funzioni che lo utilizzano ne traggano vantaggio. Ogni funzione Lambda può avere fino a 5 layer e la dimensione complessiva non compressa deve rimanere inferiore a 250 MB.
Creazione e pubblicazione di un layer
Per creare un layer, impacchetti le dipendenze nella struttura di directory corretta per il runtime (ad esempio, python/lib/python3.12/site-packages/ per Python), le comprima in un file ZIP e lo pubblichi. Dopo la pubblicazione, al layer viene assegnato un ARN di versione. Faccia riferimento a questo ARN quando collega il layer a una funzione. Ogni volta che aggiorna il layer viene creata una nuova versione; le funzioni continuano a utilizzare la versione con cui sono state configurate finché non le aggiorna esplicitamente.
# 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.11Collegamento dei layer a una funzione
Aggiunga i layer a una funzione utilizzando il parametro --layers durante la creazione o l'aggiornamento della funzione. Lambda monta tutti i layer collegati in /opt prima dell'avvio della funzione. I pacchetti Python in /opt/python vengono automaticamente inclusi nel percorso Python; i moduli Node.js in /opt/nodejs/node_modules vengono trovati automaticamente. Il codice della funzione può eseguire import o require dei pacchetti del layer come se fossero installati localmente.
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'Layer pubblici forniti da AWS
AWS pubblica layer ufficiali che può utilizzare senza crearne di propri. Tra gli esempi vi sono il layer AWS Lambda Powertools (logging strutturato, tracing e feature flag), i layer per i driver dei database e il layer AWS Parameters and Secrets Lambda Extension per memorizzare localmente nella cache i valori di SSM/Secrets Manager. Anche fornitori terzi come Datadog e New Relic pubblicano layer pubblici per i propri agenti di monitoraggio. Consulti il Serverless Application Repository e la console Lambda per verificare quali layer pubblici sono disponibili.
Estensioni Lambda tramite layer
Le Lambda Extensions vengono eseguite come processi separati insieme al codice della funzione, all'interno dello stesso ambiente di esecuzione. Si collegano agli eventi del ciclo di vita di Lambda (init, invoke, shutdown) per svolgere attività come la raccolta della telemetria, l'analisi di sicurezza o la memorizzazione nella cache della configurazione. Le estensioni vengono distribuite come Lambda Layer. AWS fornisce l'estensione CloudWatch Lambda Insights e l'estensione AWS AppConfig; i fornitori offrono agenti di monitoraggio personalizzati come estensioni.
Formati dei pacchetti di distribuzione: ZIP o container
Lambda supporta due formati di distribuzione:
- ZIP (fino a 50 MB compressi, 250 MB non compressi): caricamento rapido, supporto dei layer e compatibilità con tutti i runtime.
- Container Image (fino a 10 GB): archiviata in Amazon ECR, utilizza gli strumenti Docker standard, non supporta i layer ed è ideale per dipendenze molto grandi (modelli ML, file binari di grandi dimensioni).
Le immagini container devono implementare la Lambda Runtime Interface (utilizzando le immagini di base fornite da AWS), affinché Lambda sappia come invocare il gestore.
# 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']Flusso di lavoro delle immagini container
La creazione e la distribuzione di un'immagine container Lambda seguono un flusso di lavoro standard per i container: esegua la build con docker build, esegua il push in Amazon ECR e faccia riferimento all'URI dell'immagine durante la creazione o l'aggiornamento della funzione Lambda. Le immagini container sono immutabili: ogni tag dell'immagine corrisponde a una versione specifica della funzione. Lambda memorizza nella cache le immagini container nella propria infrastruttura, quindi i successivi avvii a freddo sono più rapidi dopo il primo.
# 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:latestVersioni e alias
Le Versions di Lambda sono istantanee immutabili del codice e della configurazione della funzione. Ogni volta che pubblica una versione, Lambda blocca il pacchetto di distribuzione, le variabili d'ambiente e i layer. Gli Aliases sono puntatori denominati a versioni specifiche: prod potrebbe puntare alla versione 5 e staging alla versione 6. Può anche utilizzare weighted aliases per indirizzare una percentuale del traffico verso una nuova versione durante le distribuzioni canary (ad esempio, 10% a v6 e 90% a 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}'Versionamento e deprecazione dei layer
Anche i layer sono soggetti a versionamento. Quando pubblica una nuova versione di un layer, le funzioni esistenti continuano a utilizzare la versione fissata finché non le aggiorna. In questo modo può aggiornare in sicurezza un layer condiviso senza interrompere contemporaneamente tutte le funzioni, distribuendo gradualmente la nuova versione. In seguito, ritiri le versioni obsolete dei layer per ridurre lo spazio di archiviazione e il carico di manutenzione. Lambda conserva le versioni dei layer anche se le elimina dalla console, finché nessuna funzione vi fa riferimento.
Scelta tra layer e immagini container
Utilizzi i Layers quando la dimensione totale non compressa è inferiore a 250 MB, desidera condividere le dipendenze tra più funzioni e vuole iterare rapidamente (aggiorna il layer una volta e tutte le funzioni ne traggono vantaggio). Utilizzi le Container Images quando le dipendenze superano 250 MB, deve usare pacchetti del sistema operativo di base personalizzati, dispone già di flussi di lavoro Docker o desidera includere risorse di grandi dimensioni (modelli ML, database di riferimento). Le immagini container non sono compatibili con i Lambda Layers, ma offrono maggiore flessibilità.
Verifica rapida
Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che i Lambda Layers impacchettano le dipendenze condivise separatamente dal codice della funzione, riducendo le dimensioni del pacchetto e consentendone il riutilizzo tra più funzioni; le Container Images (fino a 10 GB tramite ECR) sono la scelta giusta quando le dipendenze superano il limite di 250 MB degli ZIP o quando si utilizzano già flussi di lavoro Docker; infine, Versioning and Aliases consentono rilasci immutabili e distribuzioni canary con suddivisione ponderata del traffico. Ora esploreremo Lambda@Edge e i pattern basati sugli eventi.
Domande Frequenti
La lezione «Lambda Layers e pacchetti di deployment» è gratuita?
Sì — il testo completo di «Lambda Layers e pacchetti di deployment» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «Lambda Layers e pacchetti di deployment»?
Raggrupperete le dipendenze condivise in Lambda Layers riutilizzabili e gestirete i pacchetti di deployment per i runtime di grandi dimensioni. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Lambda Layers e pacchetti di deployment»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Funzioni Lambda: runtime, trigger e handler
- Concorrenza, throttling e concorrenza riservata
- Lambda Layers e pacchetti di deployment
- Lambda@Edge e pattern event-driven