Configurarea funcțiilor Lambda

Aplicații serverless cu AWS Lambda

Claudio Canales

Senior DevOps Engineer

De ce contează configurarea

  • Același cod se poate comporta foarte diferit cu setări diferite.
  • Configurarea controlează performanța, costul și siguranța.
  • Scopul este un comportament previzibil în dev și prod.

Același cod, setări diferite

Aplicații serverless cu AWS Lambda

Cod vs. configurare

Pachet de cod

  • Pachet de cod
  • Logica handler-ului + dependențe.
  • Modificările necesită un deploy.

Configurarea funcției

  • Configurarea funcției
  • Memorie, timeout, variabile de mediu.
  • Rol de execuție + straturi (layers).
Aplicații serverless cu AWS Lambda

Parametrii pe care îi controlezi

  • Runtime + handler: ce cod rulează Lambda.
  • Memorie + timeout: performanță, cost, siguranță.
  • Variabile de mediu: configurare fără hardcodare.
  • Rol de execuție: permisiuni pentru API-urile AWS.
  • Straturi (layers): dependențe partajate între funcții.

Parametrii de configurare Lambda

Aplicații serverless cu AWS Lambda

Runtime și handler – noțiuni de bază

  • Runtime = mediul de limbaj (de exemplu, Python).
  • Handler = punctul de intrare apelat de Lambda.
  • Formatul handler-ului: file.function.
  • Exemplu: lambda_function.lambda_handler.

Structura șirului handler

Aplicații serverless cu AWS Lambda

Șirul handler: ce poate merge greșit

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

Import, apoi apel handler

Aplicații serverless cu AWS Lambda

Rolul de execuție (IAM)

  • IAM = Identity and Access Management (permisiuni).
  • Rolul de execuție definește ce are voie să facă funcția ta.
  • Controlează ce API-uri AWS poate apela codul tău.

Rolul de execuție ca un card de acces

Aplicații serverless cu AWS Lambda

Ce este un Lambda layer?

  • Un layer este un ZIP atașat unei funcții.
  • Lambda pune fișierele din layer la dispoziție la runtime, în /opt.
  • Folosește layers pentru biblioteci partajate și utilitare comune.
  • Actualizezi layer-ul o singură dată; mai multe funcții îl pot reutiliza.

Layer montat în /opt

Aplicații serverless cu AWS Lambda

Unde apar layerele la runtime

  • Codul funcției tale este montat în /var/task.
  • Layerele atașate sunt montate în /opt.
  • Lambda oferă și un folder temporar la /tmp.

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

Aplicații serverless cu AWS Lambda

Memoria influențează și CPU

  • Mai multă memorie -> mai mult CPU.
  • Poate reduce timpul de execuție pentru sarcini CPU-intensive.
  • Costul total depinde de durată și de memorie.

Memoria crește CPU

Aplicații serverless cu AWS Lambda

Ajustează memoria pe baza măsurătorilor

  • Începe cu o valoare implicită rezonabilă (de exemplu, 256 MB).
  • Testează cu evenimente realiste.
  • Compară durata și costul pentru diferite dimensiuni de memorie.

Testare memorie: măsoară durata și costul

Aplicații serverless cu AWS Lambda

Timeout-uri și execuție sigură

  • Timeout-ul oprește execuțiile scăpate de sub control.
  • Verifică timpul rămas înainte de operații lungi.
  • Eșuează rapid și reîncearcă când este cazul.

Timeout-ul ca un cronometru de siguranță

Aplicații serverless cu AWS Lambda

Exemplu: verificarea timpului rămas

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}

Gardă cu cronometru din context

Aplicații serverless cu AWS Lambda

Variabile de mediu

  • Ține configurarea în afara codului.
  • Separă setările pentru dev/test/prod.
  • Folosește Secrets Manager pentru valori sensibile.

Variabilele de mediu configurează comportamentul

Aplicații serverless cu AWS Lambda

Exemplu: citirea variabilelor de mediu

import os

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

Valorile implicite fac testele locale mai sigure

  • Importă os pentru a accesa variabilele de mediu.
  • os.getenv returnează valoarea sau valoarea implicită.
Aplicații serverless cu AWS Lambda

Greșeli frecvente de configurare

  • Hardcodarea valorilor de stadiu în cod.
  • Timeout prea mic sau permisiuni IAM lipsă.
  • Date sensibile în variabile de mediu simple.

Capcane și reguli practice

Aplicații serverless cu AWS Lambda

Hai să exersăm!

Aplicații serverless cu AWS Lambda

Preparing Video For Download...