0Pricing
AWS Solutions Architect · Lezione

Funzioni Lambda: runtime, trigger e handler

Scriverete una funzione Lambda, sceglierete un runtime, configurerete memoria e timeout e la collegherete a un evento S3 o a un trigger API Gateway.

Funzioni Lambda: runtime, trigger e handler è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 1 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 AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.

Che cos'è AWS Lambda

AWS Lambda è un servizio di elaborazione serverless che esegue il Suo codice in risposta agli eventi, senza richiedere il provisioning o la gestione dei server. Paga solo per il tempo di elaborazione consumato, misurato in millisecondi, rendendo Lambda estremamente conveniente per i carichi di lavoro sporadici e basati sugli eventi. Lambda si adatta automaticamente da zero a migliaia di esecuzioni simultanee in base agli eventi in ingresso.

Runtime supportati

Lambda supporta runtime gestiti tra cui Python, Node.js, Java, Go, Ruby, .NET e altri. AWS gestisce questi runtime e applica le patch di sicurezza. Per i linguaggi o le versioni dei runtime non supportati nativamente, può fornire un Custom Runtime tramite un eseguibile bootstrap oppure impacchettare la funzione in un'immagine container (fino a 10 GB), anziché in un pacchetto di distribuzione ZIP.

La funzione handler di Lambda

Ogni funzione Lambda ha un handler, ovvero il punto di ingresso che il codice deve esportare. AWS chiama l'handler con due argomenti: l'oggetto event (i dati di input del trigger) e un oggetto context (i metadati relativi all'invocazione, come il nome della funzione, il tempo rimanente e l'ID della richiesta). L'handler restituisce una risposta che, a seconda del tipo di invocazione, può essere restituita al chiamante.

# 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'
    }

Memoria, timeout e storage effimero

Lambda consente di configurare la memoria da 128 MB a 10.240 MB. La CPU viene allocata in proporzione alla memoria: una maggiore quantità di memoria significa più CPU. Il timeout può essere impostato da 1 secondo a 15 minuti; se la funzione supera questo limite, Lambda la termina. È inoltre disponibile lo storage effimero /tmp (512 MB per impostazione predefinita, configurabile fino a 10 GB) per i file temporanei all'interno di una singola invocazione. Questo storage non persiste tra un'invocazione e l'altra.

Invocazione sincrona e asincrona

Le funzioni Lambda possono essere invocate in modo sincrono (il chiamante attende il risultato, come nel caso di API Gateway e ALB) oppure asincrono (il chiamante non attende, come nel caso degli eventi S3 e SNS). In modalità asincrona, Lambda ritenta le esecuzioni non riuscite fino a due volte e può instradare gli eventi non riusciti verso una Dead Letter Queue (SQS o SNS) o verso un bus degli eventi EventBridge. La scelta della modalità di invocazione corretta influisce sulla progettazione della gestione degli errori.

Trigger Lambda comuni

Lambda si integra nativamente con decine di servizi AWS come origini di eventi (trigger):

  • API Gateway / ALB: richieste HTTP (sincrone)
  • S3: eventi di creazione/eliminazione di oggetti (asincroni)
  • DynamoDB Streams / Kinesis: streaming di record (basato sul polling, sincrono)
  • SQS: messaggi di coda (basato sul polling)
  • SNS: notifiche degli argomenti (asincrone)
  • EventBridge: eventi pianificati o personalizzati
  • CloudWatch Logs: filtri di sottoscrizione ai log

Ruolo di esecuzione IAM

Ogni funzione Lambda deve avere un ruolo di esecuzione IAM che conceda alla funzione le autorizzazioni per chiamare altri servizi AWS. Ad esempio, se la funzione legge da S3 e scrive in DynamoDB, il ruolo di esecuzione deve includere le autorizzazioni s3:GetObject e dynamodb:PutItem. Applichi il principio del privilegio minimo: conceda solo le autorizzazioni effettivamente necessarie alla funzione. Il ruolo di esecuzione di base deve includere anche logs:CreateLogGroup, logs:CreateLogStream e logs:PutLogEvents per CloudWatch Logs.

Pacchetti di distribuzione e limiti di dimensione

Lambda accetta due formati di distribuzione: un file ZIP (50 MB compresso, 250 MB non compresso) caricato direttamente o tramite S3 e un'immagine container (fino a 10 GB) archiviata in Amazon ECR. I pacchetti ZIP sono più veloci da distribuire e sono adatti alle funzioni di piccole dimensioni e ai Lambda Layers. Le immagini container sono ideali per grandi insiemi di dipendenze o per i team che utilizzano già flussi di lavoro basati su Docker. Entrambi i formati possono usare gli stessi runtime e lo stesso schema di handler.

# 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'

Variabili d'ambiente e segreti

Passi la configurazione a Lambda tramite le variabili d'ambiente. Per i valori sensibili (chiavi API, password dei database), li memorizzi in AWS Secrets Manager o in Parameter Store e li recuperi al momento dell'inizializzazione della funzione (al di fuori dell'handler), così da beneficiare del riutilizzo del contesto di esecuzione. Non inserisca mai segreti direttamente nel codice della funzione né nelle variabili d'ambiente in testo non cifrato: utilizzi la crittografia KMS per le variabili d'ambiente Lambda, in modo da proteggerle quando sono archiviate.

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
    pass

Cold start e riutilizzo del contesto di esecuzione

La prima invocazione di una funzione Lambda dopo la distribuzione o dopo un periodo di inattività comporta un cold start: AWS deve inizializzare l'ambiente di runtime, scaricare il pacchetto di distribuzione ed eseguire il codice di inizializzazione. Le invocazioni successive nello stesso ambiente di esecuzione sono warm start e sono molto più rapide. Mantenga il codice di inizializzazione globale (client SDK, connessioni al database) al di fuori dell'handler per riutilizzare il contesto di esecuzione tra le invocazioni warm.

Lambda in un VPC

Per impostazione predefinita, Lambda viene eseguito in un VPC gestito da AWS e può accedere a Internet, ma non alle risorse del VPC privato. Per accedere a un database RDS o a un cluster ElastiCache in una subnet privata, configuri Lambda affinché venga eseguito all'interno del VPC, specificando subnet e gruppi di sicurezza. Le funzioni Lambda abilitate per VPC utilizzano Hyperplane ENI per la rete (non è più necessario predisporre un ENI per ogni funzione), eliminando così la penalizzazione storica del cold start per le funzioni Lambda in VPC.

aws lambda update-function-configuration \
  --function-name 'MyFunction' \
  --vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'

Verifica rapida

Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha appreso che i runtime Lambda supportano Python, Node.js, Java, Go e altri linguaggi, con runtime personalizzati e immagini container per i casi avanzati; i trigger, tra cui API Gateway (sincrono) e S3/SNS (asincroni), definiscono il modo in cui gli eventi raggiungono le funzioni Lambda; infine, il ruolo di esecuzione, le variabili d'ambiente e la configurazione VPC sono aspetti fondamentali per connettere in modo sicuro Lambda ad altri servizi AWS. Nella prossima lezione esamineremo la concorrenza Lambda, il throttling e la concorrenza riservata.

Domande Frequenti

La lezione «Funzioni Lambda: runtime, trigger e handler» è gratuita?

Sì — il testo completo di «Funzioni Lambda: runtime, trigger e handler» è 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 AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.

Cosa imparerò in «Funzioni Lambda: runtime, trigger e handler»?

Scriverete una funzione Lambda, sceglierete un runtime, configurerete memoria e timeout e la collegherete a un evento S3 o a un trigger API Gateway. Eserciti AWS Solutions Architect 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 AWS Solutions Architect?

Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Funzioni Lambda: runtime, trigger e handler»?

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

Sì. Ogni lezione AWS Solutions Architect 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

  1. Funzioni Lambda: runtime, trigger e handler
  2. Concorrenza, throttling e concorrenza riservata
  3. Lambda Layers e pacchetti di deployment
  4. Lambda@Edge e pattern event-driven
← Torna a AWS Solutions Architect