Configurare le funzioni Lambda

Applicazioni serverless con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Perché la configurazione conta

  • Lo stesso codice può cambiare molto con impostazioni diverse.
  • La configurazione incide su prestazioni, costi e sicurezza.
  • Obiettivo: comportamento prevedibile in dev e prod.

Stesso codice, impostazioni diverse

Applicazioni serverless con AWS Lambda

Codice vs configurazione

Pacchetto di codice

  • Pacchetto codice
  • Logica dell'handler + dipendenze.
  • Le modifiche richiedono un deploy.

Configurazione funzione

  • Configurazione funzione
  • Memoria, timeout, variabili d'ambiente.
  • Ruolo di esecuzione + layer.
Applicazioni serverless con AWS Lambda

Le impostazioni che controlli

  • Runtime + handler: quale codice esegue Lambda.
  • Memoria + timeout: prestazioni, costi, sicurezza.
  • Variabili d'ambiente: configurazione senza hardcoding.
  • Ruolo di esecuzione: permessi per le API AWS.
  • Layer: dipendenze condivise tra funzioni.

Le leve di configurazione di Lambda

Applicazioni serverless con AWS Lambda

Basi di runtime e handler

  • Runtime = ambiente linguaggio (es. Python).
  • Handler = punto d'ingresso chiamato da Lambda.
  • Formato handler: file.function.
  • Esempio: lambda_function.lambda_handler.

Scomposizione della stringa handler

Applicazioni serverless con AWS Lambda

Stringa handler: cosa può andare storto

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

Import poi chiamata dell'handler

Applicazioni serverless con AWS Lambda

Il ruolo di esecuzione (IAM)

  • IAM = Identity and Access Management (permessi).
  • Il ruolo di esecuzione definisce cosa può fare la funzione.
  • Controlla quali API AWS può chiamare il codice.

Ruolo di esecuzione come badge

Applicazioni serverless con AWS Lambda

Cos'è un layer Lambda?

  • Un layer è uno ZIP collegato alla funzione.
  • Lambda rende i file del layer disponibili a runtime in /opt.
  • Usa i layer per librerie e utility condivise.
  • Aggiorni il layer una volta; più funzioni lo riusano.

Layer montato in /opt

Applicazioni serverless con AWS Lambda

Dove compaiono i layer a runtime

  • Il codice della funzione è montato in /var/task.
  • I layer collegati sono montati in /opt.
  • Lambda fornisce anche una cartella temporanea in /tmp.

Cartelle runtime: /var/task, /opt, /tmp

Applicazioni serverless con AWS Lambda

La memoria influisce anche sulla CPU

  • Più memoria -> più CPU.
  • Può ridurre il tempo per task CPU-bound.
  • Il costo dipende da durata e memoria.

La memoria aumenta la CPU

Applicazioni serverless con AWS Lambda

Ottimizza la memoria con misurazioni

  • Parti da un default ragionevole (es. 256 MB).
  • Testa con eventi realistici.
  • Confronta durata e costo tra dimensioni di memoria.

Sweep memoria: misura durata e costo

Applicazioni serverless con AWS Lambda

Timeout e esecuzione sicura

  • Il timeout ferma esecuzioni fuori controllo.
  • Controlla il tempo residuo prima di lavori lunghi.
  • Fallisci subito e ritenta quando ha senso.

Timeout come timer di sicurezza

Applicazioni serverless con AWS Lambda

Walkthrough: controllare il tempo residuo

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}

Guardia sul conto alla rovescia del contesto

Applicazioni serverless con AWS Lambda

Variabili d'ambiente

  • Tieni la config fuori dal codice.
  • Separa impostazioni dev/test/prod.
  • Usa Secrets Manager per valori sensibili.

Le variabili d'ambiente configurano il comportamento

Applicazioni serverless con AWS Lambda

Walkthrough: leggere le variabili d'ambiente

import os

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

I default rendono i test locali più sicuri

  • Importa os per accedere alle variabili d'ambiente.
  • os.getenv restituisce valore o default.
Applicazioni serverless con AWS Lambda

Errori comuni di configurazione

  • Valori di stage hardcoded nel codice.
  • Timeout troppo basso o permessi IAM mancanti.
  • Segreti in variabili d'ambiente in chiaro.

Insidie e buone pratiche

Applicazioni serverless con AWS Lambda

Ayo berlatih!

Applicazioni serverless con AWS Lambda

Preparing Video For Download...