AWS Lambda
Serverless Cloud Practitioner Developer Associate Solutions Architect Associate

AWS Lambda

AWS Lambda

Uruchamiaj kod bez zarządzania serwerami. Płać tylko za rzeczywisty czas wykonania - z dokładnością do milisekundy.

AWS Lambda to serwis serverless, który pozwala uruchamiać kod bez provisionowania i zarządzania serwerami. Wgrywasz funkcję (Python, Node.js, Java, Go, .NET, Ruby), definiujesz trigger (np. żądanie HTTP, nowy plik w S3) i Lambda robi resztę - skalowanie, patching, monitoring.

Lambda to jeden z filarów architektury serverless na AWS. Zamiast płacić za serwer 24/7, płacisz tylko za faktyczny czas wykonania kodu - z dokładnością do 1 milisekundy. Przy małym ruchu koszt wynosi dosłownie grosze. Lambda skaluje się automatycznie od 0 do tysięcy równoczesnych wywołań, bez żadnej konfiguracji z Twojej strony.

Typowy pattern: API Gateway przyjmuje żądanie HTTP ➔ wywołuje Lambda ➔ Lambda czyta/pisze do DynamoDB ➔ zwraca odpowiedź. Zero serwerów do zarządzania, zero patchy, zero przestojów.

Czy wiesz, ze...

AWS Lambda obsługuje ponad 10 bilionów wywołań miesięcznie. Serwisy takie jak Netflix, iRobot czy Coca-Cola używają Lambda jako fundamentu swoich architektur. Free Tier daje Ci 1 milion darmowych wywołań miesięcznie - na zawsze, nie tylko przez 12 miesięcy!

Pro Tip

Aby zminimalizować cold starty, używaj Provisioned Concurrency dla krytycznych funkcji lub pisz funkcje w lekkich runtime'ach (Python, Node.js). Unikaj ciężkich frameworków (np. Spring Boot w Javie) - im mniejszy pakiet, tym szybszy start.

Uwaga

Cold starty Lambda w VPC moga sigac kilku sekund (poprawione od 2019, ale nadal odczuwalne). Max timeout to 15 minut, wiec Lambda nie nadaje sie do dlugich procesow. Limit /tmp to 10 GB, a pakiet wdrozeniowy max 250 MB (rozpakowany). Przy duzej skali pamietaj o limicie 1000 rownoczesnych wywolan (domyslnie) i kosztach wzrastajacych liniowo z ruchem.

AWS Lambda to serverless compute - piszesz kod, a AWS zarzadza cala infrastruktura. Platisz tylko za czas wykonania (z dokladnoscia do 1 ms) i liczbe wywolan. Lambda automatycznie skaluje sie od 0 do tysiecy rownoczesnych wykonan.

1

Napisz handler (funkcje)

Handler to punkt wejscia Twojej funkcji. W Python to: def handler(event, context). Event zawiera dane wejsciowe (np. body z API Gateway, rekord z S3). Context zawiera metadane: remaining time, request ID, log group. Funkcja moze zwrocic wartosc (synchronicznie) lub nic (asynchronicznie). Wspierane runtime: Python, Node.js, Java, .NET, Go, Ruby, a takze custom runtime przez Lambda Runtime API.

2

Spakuj i wdraz kod

Masz trzy opcje deployu: ZIP (do 50 MB skompresowany, 250 MB rozpakowany), Container Image (do 10 GB, Dockerfile z base image od AWS), lub SAM/CDK (IaC). Dla wiekszych dependencji uzywaj Lambda Layers - wspoldzielone biblioteki miedzy funkcjami (do 5 layers, lacznie 250 MB). Layer to ZIP z odpowiednia struktura katalogow (python/, nodejs/ itp.).

3

Skonfiguruj trigger (zrodlo wywolan)

Lambda moze byc wywolana przez: API Gateway (HTTP), S3 Events, DynamoDB Streams, SQS, SNS, EventBridge, CloudWatch Events, Kinesis, Cognito, Alexa i wiele wiecej. Kazdy trigger ma inny format event. Lambda moze byc wywolana synchronicznie (czekasz na odpowiedz), asynchronicznie (fire-and-forget z automatycznymi retries) lub przez poll-based source (SQS, Kinesis, DynamoDB Streams).

4

Cold Start - pierwsze wywolanie

Przy pierwszym wywolaniu (lub po okresie bezczynnosci) AWS musi: pobrac kod, uruchomic runtime, zainicjalizowac Twoj kod (import modulow, polaczenie z DB). To cold start - trwa od 100 ms (Python/Node.js) do 1-5 sekund (Java/.NET). Po cold start instancja jest "ciepla" i obsluguje kolejne wywolania bez inicjalizacji. Jedna instancja obsluguje jedno wywolanie naraz.

5

Wykonanie funkcji

Funkcja ma limit czasu (timeout) od 1 sekundy do 15 minut. Dostaje od 128 MB do 10,240 MB RAM (pamiec), a CPU skaluje sie proporcjonalnie - 1,769 MB = 1 vCPU. Ma dostep do /tmp (do 10 GB, ephemeral storage). Funkcja moze wykonywac HTTP requesty, operowac na plikach w /tmp, wywolywac inne serwisy AWS. Po zakonczeniu odpowiedz wraca do wywolujacego.

6

Odpowiedz i powtorki (retries)

Dla synchronicznych wywolan blad trafia od razu do klienta. Dla asynchronicznych Lambda automatycznie ponawia 2 razy (z opoznieniem). Po wyczerpaniu retries event trafia do Dead Letter Queue (SQS) lub On-Failure Destination (SQS, SNS, Lambda, EventBridge). Dla event source mapping (SQS, Kinesis) Lambda ponawia az do wygasniecia wiadomosci lub pomyslnego przetworzenia.

Lambda to potezne narzedzie, ale wymaga innego myslenia niz tradycyjne serwery. Oto kluczowe praktyki z produkcyjnych wdrozen serverless.

Minimalizuj cold starty

Trzymaj pakiet deploymentowy jak najmniejszy - usun niepotrzebne dependencje. Unikaj ciezkich frameworkow (Spring Boot na Lambda to cold starty 5-10s). Inicjalizuj polaczenia DB i klientow AWS POZA handlerem (w kodzie inicjalizacyjnym) - beda reuzywane miedzy wywolaniami. Dla Javy uzywaj GraalVM native image lub SnapStart (redukuje cold start do ~200ms). Python i Node.js maja najkrotsze cold starty.

Poczatkujacy

Provisioned Concurrency - gdy cold start to nie opcja

Provisioned Concurrency utrzymuje N "cieplych" instancji gotowych do natychmiastowej odpowiedzi. Platisz za zarezerwowane instancje nawet jak nie sa uzywane (ok. $0.015/GB-godzine). Uzywaj dla: API z wymaganiem latency < 100ms, funkcji za API Gateway z SLA, krytycznych workflowow. Mozesz konfigurowac Application Auto Scaling aby zwiekszyc PC w godzinach szczytu i zmniejszyc w nocy.

Zaawansowany

Pamiec = CPU - tuning wydajnosci

Lambda przydziela CPU proporcjonalnie do pamieci: 1,769 MB = 1 vCPU, 3,538 MB = 2 vCPU (ale watkowanie zalezy od kodu). Czesto zwiekszennie pamieci OBNIIZA koszty - funkcja wykonuje sie szybciej, a placisz za czas * pamiec. Uzywaj AWS Lambda Power Tuning (open-source od AWS) - testuje Twoja funkcje z rozna pamiecia i pokazuje optymalny stosunek koszt/wydajnosc.

Zaawansowany

Lambda Layers - wspoldziel kod i dependencje

Layer to ZIP z bibliotekami dolaczany do funkcji w runtime. Uzywaj do: wspolnych bibliotek (np. AWS SDK w konkretnej wersji), niestandardowych runtime, wspolnego kodu pomiedzy funkcjami. Mozesz miec max 5 layers na funkcje. Layer musi miec odpowiednia strukture: python/lib/python3.x/site-packages/ dla Pythona, nodejs/node_modules/ dla Node.js. AWS udostepnia publiczne layers np. z Pandas/NumPy.

Poczatkujacy

Katalog /tmp i Ephemeral Storage

Lambda ma /tmp z domyslnie 512 MB (rozszerzalny do 10 GB za dodatkowa oplata). Pliki w /tmp przetrwaja miedzy wywolaniami tej samej instancji (warm invocations) - mozesz cachowac dane. Ale nie polegaj na tym - Lambda moze stworzyc nowa instancje w kazdej chwili. Uzywaj /tmp do: tymczasowego przetwarzania plikow, cache bibliotek, rozpakowania archiwow przed procesowaniem.

Poczatkujacy

Zmienne srodowiskowe i Secrets

Konfiguruj funkcje przez environment variables (np. TABLE_NAME, API_URL, STAGE). Sa szyfrowane at-rest przez KMS. Dla sekretow (hasla, klucze API) uzyawaj AWS Secrets Manager lub SSM Parameter Store (SecureString) - pobieraj w kodzie inicjalizacyjnym i cachuj w zmiennej globalnej. Nie hardcoduj wartosci w kodzie. Uzywaj roznych environment variables per stage (dev/staging/prod).

Poczatkujacy

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS Lambda bezposrednio w konsoli AWS.

Do czego sluzy AWS Lambda?

01

API Backend (REST/GraphQL)

Twórz skalowalne API z API Gateway + Lambda. Każdy endpoint to osobna funkcja. Idealne dla mikrousług i aplikacji mobilnych. Płacisz tylko za faktyczne żądania.

02

Przetwarzanie eventów w czasie rzeczywistym

Reaguj na nowe pliki w S3 (np. generuj thumbnails), wiadomości w SQS, zmiany w DynamoDB Streams, logi z CloudWatch. Event-driven architecture bez serwera.

03

Automatyzacja i scheduled tasks

Cron joby przez EventBridge: czyszczenie starych zasobów, generowanie raportów, wysyłanie powiadomień, rotacja kluczy. Bez stałego serwera, bez kosztów gdy nie działa.

04

Przetwarzanie danych i ETL

Transformacja danych między serwisami: parsowanie CSV, konwersja formatów, wzbogacanie danych, agregacja logów. Lambda Step Functions pozwala orkiestrować złożone pipeline'y.

Co musisz wiedziec?

Funkcja Lambda

Twój kod + konfiguracja (runtime, timeout, pamięć, zmienne środowiskowe). Może być napisana w Python, Node.js, Java, Go, .NET, Ruby lub dowolnym języku przez custom runtime.

Trigger / Event Source

Zdarzenie wywołujące funkcję. Ponad 200 integracji: API Gateway (HTTP), S3 (nowy plik), SQS (wiadomość), DynamoDB Streams, EventBridge (scheduler), CloudWatch Logs, Cognito, IoT i wiele innych.

Cold Start

Opóźnienie przy pierwszym wywołaniu, gdy Lambda tworzy nowe środowisko wykonawcze (sandbox). Trwa 100ms-2s w zależności od runtime i rozmiaru pakietu. Kolejne wywołania (warm start) są szybsze.

Concurrency

Liczba równoczesnych instancji funkcji. Domyślny limit: 1000 na region (można zwiększyć). Reserved concurrency gwarantuje pulę, Provisioned concurrency eliminuje cold starty.

Layers

Warstwy z kodem współdzielonym między funkcjami: biblioteki, SDK, narzędzia. Max 5 warstw na funkcję, max 250 MB łącznie z kodem (unzipped).

Execution Role

Rola IAM przypisana do funkcji. Określa do jakich serwisów AWS Lambda ma dostęp (np. czytanie z S3, pisanie do DynamoDB, wysyłanie logów do CloudWatch).

Architektura: Serverless REST API z Lambda

Kompletne serverless API z API Gateway, Lambda i DynamoDB. Zero serwerow do zarzadzania, automatyczne skalowanie od 0 do tysiecy requestow na sekunde, platisz tylko za faktyczne uzycie.

Klient API Aplikacja webowa, mobilna lub inny serwis
HTTPS
API Gateway
API Gateway REST/HTTP API, autoryzacja (Cognito/JWT), rate limiting, cache odpowiedzi
Invoke (sync)
Lambda
Lambda Logika biznesowa, walidacja, transformacja danych, max 15 min timeout
GetItem / PutItem
DynamoDB
DynamoDB NoSQL baza danych, single-digit ms latency, on-demand lub provisioned capacity
On-Failure
SQS (Dead Letter Queue)
SQS (Dead Letter Queue) Nieprzetworzone eventy po wyczerpaniu retries, monitoring i alarm w CloudWatch
Uzywaj HTTP API (API Gateway v2) zamiast REST API gdy nie potrzebujesz zaawansowanych features - jest do 70% tansze i ma nizsza latency.
DynamoDB On-Demand mode jest idealny dla nieprzewidywalnego ruchu - platisz per request bez planowania capacity. Dla stabilnego ruchu Provisioned mode jest tanszy.
Wzorzec async: API Gateway zwraca 202 Accepted, Lambda wysyla task do SQS, druga Lambda przetwarza z kolejki - oddziela latency API od czasu przetwarzania.

Porownanie Lambda vs EC2 vs Fargate

Cecha Lambda EC2 Fargate
Model kosztow Za wywolanie + czas Za godzine (On-Demand/RI) Za vCPU + pamiec/s
Cold start 100ms-10s (VPC do 10s) Brak (serwer dziala) Brak (kontener dziala)
Max czas wykonania 15 minut Bez limitu Bez limitu
Skalowanie Automatyczne (ms) Reczne lub ASG (minuty) Automatyczne (sekundy)
Zlozonosc operacyjna Minimalna Wysoka (patching, AMI) Srednia (task definitions)
Najlepsze dla Event-driven, API, ETL Staly ruch, GPU, specjalne OS Kontenery, mikroserwisy

Ile kosztuje AWS Lambda?

Żądania

Płacisz za liczbę wywołań funkcji. Pierwsze 1 milion/miesiąc GRATIS (na zawsze).

$0.20 za milion żądań (po Free Tier)

Czas wykonania (GB-s)

Płacisz za czas × przydzieloną pamięć. Im więcej RAM, tym więcej CPU. Rozliczanie co 1ms.

128 MB, 200ms = 0.025 GB-s ≈ ułamek grosza

Provisioned Concurrency

Opcjonalne: utrzymujesz ciepłe instancje, eliminując cold starty. Płacisz za gotowość + czas.

~$0.015/godz. za 1 instancję gotową

Free Tier

1 milion żądań + 400 000 GB-s MIESIĘCZNIE - za darmo, bez limitu czasowego. Wystarczy na większość projektów dev/test.

~3.2 mln sekund obliczeń przy 128 MB RAM

Przyklady AWS CLI

Utwórz funkcję Lambda

Tworzy nową funkcję z kodu ZIP, runtime Python 3.12

aws lambda create-function \
 --function-name moja-funkcja \
 --runtime python3.12 \
 --role arn:aws:iam::123456789012:role/lambda-role \
 --handler lambda_function.lambda_handler \
 --zip-file fileb://function.zip

Wywołaj funkcję

Ręczne wywołanie Lambda z parametrami JSON

aws lambda invoke \
 --function-name moja-funkcja \
 --payload '{"name": "CloudManiak", "action": "test"}' \
 --cli-binary-format raw-in-base64-out \
  response.json && cat response.json

Sprawdź logi funkcji

Ostatnie logi z CloudWatch dla Twojej Lambda

aws logs tail /aws/lambda/moja-funkcja \
 --since 1h \
 --format short

Zaktualizuj kod funkcji

Wgraj nową wersję kodu bez zmiany konfiguracji

aws lambda update-function-code \
 --function-name moja-funkcja \
 --zip-file fileb://function-v2.zip

Quiz: AWS Lambda

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Jaki jest maksymalny timeout funkcji Lambda?

2. Czym jest Cold Start w Lambda?

3. Ile darmowych wywołań Lambda dostajesz w Free Tier?

4. Które źródło NIE może bezpośrednio triggerować Lambda?

Chcesz poznac AWS Lambda w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS Lambda krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy