0Pricing
Cloud & IT Cert Prep · Lekcja

Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery

Napiszą funkcję Lambda, wybiorą środowisko uruchomieniowe, skonfigurują pamięć i limit czasu oraz połączą ją ze zdarzeniem S3 lub wyzwalaczem API Gateway.

Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Czym jest AWS Lambda

AWS Lambda to bezserwerowa usługa obliczeniowa, która uruchamia kod w odpowiedzi na zdarzenia bez konieczności aprowizowania serwerów ani zarządzania nimi. Płacą Państwo wyłącznie za zużyty czas obliczeń — mierzony w milisekundach — dzięki czemu Lambda jest wyjątkowo opłacalna w przypadku sporadycznych obciążeń sterowanych zdarzeniami. Lambda automatycznie skaluje się od zera do tysięcy równoczesnych wykonań w zależności od napływających zdarzeń.

Obsługiwane środowiska uruchomieniowe

Lambda obsługuje zarządzane środowiska uruchomieniowe, w tym Python, Node.js, Java, Go, Ruby, .NET i inne. AWS utrzymuje te środowiska i stosuje w nich poprawki zabezpieczeń. W przypadku języków lub wersji środowisk uruchomieniowych, które nie są natywnie obsługiwane, można dostarczyć Custom Runtime za pomocą pliku wykonywalnego bootstrap albo spakować funkcję jako obraz kontenera (do 10 GB), zamiast używać pakietu wdrożeniowego ZIP.

Funkcja obsługi Lambda

Każda funkcja Lambda ma handler — punkt wejścia, który musi zostać wyeksportowany przez kod. AWS wywołuje handler z dwoma argumentami: obiektem event (danymi wejściowymi z wyzwalacza) oraz obiektem context (metadanymi dotyczącymi wywołania, takimi jak nazwa funkcji, pozostały czas i identyfikator żądania). Handler zwraca odpowiedź, która w zależności od typu wywołania może zostać przekazana wywołującemu.

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

Pamięć, limit czasu i pamięć efemeryczna

Lambda umożliwia skonfigurowanie pamięci w zakresie od 128 MB do 10 240 MB. Procesor CPU jest przydzielany proporcjonalnie do ilości pamięci — więcej pamięci oznacza więcej CPU. Limit czasu można ustawić od 1 sekundy do 15 minut; jeśli funkcja go przekroczy, Lambda ją kończy. Dostępna jest także efemeryczna pamięć /tmp (domyślnie 512 MB, z możliwością konfiguracji do 10 GB) na pliki tymczasowe w ramach pojedynczego wywołania. Ta pamięć nie jest zachowywana między wywołaniami.

Wywołanie synchroniczne a asynchroniczne

Funkcje Lambda można wywoływać synchronicznie (wywołujący czeka na wynik — ten tryb jest używany przez API Gateway i ALB) albo asynchronicznie (wywołujący nie czeka — ten tryb jest używany przez zdarzenia S3 i SNS). W trybie asynchronicznym Lambda ponawia nieudane wykonania maksymalnie dwa razy i może kierować nieudane zdarzenia do kolejki komunikatów niedostarczonych (SQS lub SNS) albo do magistrali zdarzeń EventBridge. Wybór właściwego trybu wywołania wpływa na sposób projektowania obsługi błędów.

Typowe wyzwalacze Lambda

Lambda natywnie integruje się z dziesiątkami usług AWS, które mogą być źródłami zdarzeń (wyzwalaczami):

  • API Gateway / ALB: żądania HTTP (synchronicznie)
  • S3: zdarzenia utworzenia/usunięcia obiektu (asynchronicznie)
  • DynamoDB Streams / Kinesis: strumieniowanie rekordów (odpytywanie, synchronicznie)
  • SQS: komunikaty z kolejki (odpytywanie)
  • SNS: powiadomienia tematu (asynchronicznie)
  • EventBridge: zdarzenia zaplanowane lub niestandardowe
  • CloudWatch Logs: filtry subskrypcji dzienników

Rola wykonawcza IAM

Każda funkcja Lambda musi mieć rolę wykonawczą IAM, która przyznaje funkcji uprawnienia do wywoływania innych usług AWS. Jeśli na przykład funkcja odczytuje dane z S3 i zapisuje je w DynamoDB, rola wykonawcza potrzebuje uprawnień s3:GetObject i dynamodb:PutItem. Należy stosować zasadę najmniejszych uprawnień: przyznawać tylko te uprawnienia, których funkcja rzeczywiście potrzebuje. Podstawowa rola wykonawcza musi również obejmować uprawnienia logs:CreateLogGroup, logs:CreateLogStream i logs:PutLogEvents na potrzeby CloudWatch Logs.

Pakiety wdrożeniowe i limity rozmiaru

Lambda obsługuje dwa formaty wdrożenia: plik ZIP (50 MB po skompresowaniu, 250 MB po rozpakowaniu), przesyłany bezpośrednio lub za pośrednictwem S3, oraz obraz kontenera (do 10 GB), przechowywany w Amazon ECR. Pakiety ZIP można wdrażać szybciej i dobrze sprawdzają się w przypadku małych funkcji oraz warstw Lambda. Obrazy kontenerów są idealne przy dużych zestawach zależności lub w zespołach, które już korzystają z przepływów pracy opartych na Dockerze. Oba formaty mogą używać tych samych środowisk uruchomieniowych i wzorca handlera.

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

Zmienne środowiskowe i dane uwierzytelniające

Konfigurację przekazuje się do Lambda za pomocą zmiennych środowiskowych. Poufne wartości (klucze API, hasła do baz danych) należy przechowywać w AWS Secrets Manager lub Parameter Store i pobierać je podczas inicjalizacji funkcji (poza handlerem), aby korzystać z ponownego użycia kontekstu wykonania. Nigdy nie należy umieszczać danych uwierzytelniających na stałe w kodzie funkcji ani przechowywać ich w zmiennych środowiskowych w postaci jawnego tekstu — do ochrony zmiennych środowiskowych Lambda w stanie spoczynku należy używać szyfrowania KMS.

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

Zimne starty i ponowne użycie kontekstu wykonania

Pierwsze wywołanie funkcji Lambda po wdrożeniu lub po okresie bezczynności powoduje zimny start: AWS musi zainicjalizować środowisko uruchomieniowe, pobrać pakiet wdrożeniowy i wykonać kod inicjalizacyjny. Kolejne wywołania w tym samym środowisku wykonawczym są ciepłymi startami i odbywają się znacznie szybciej. Kod globalnej inicjalizacji (klienty SDK, połączenia z bazą danych) należy umieszczać poza handlerem, aby ponownie wykorzystywać kontekst wykonania podczas ciepłych wywołań.

Lambda w VPC

Domyślnie Lambda działa w VPC zarządzanej przez AWS i może uzyskiwać dostęp do internetu, ale nie do zasobów prywatnej sieci VPC. Aby uzyskać dostęp do bazy danych RDS lub klastra ElastiCache w prywatnej podsieci, należy skonfigurować działanie Lambda wewnątrz sieci VPC, określając podsieci i grupy zabezpieczeń. Funkcje Lambda z włączoną obsługą VPC używają do komunikacji sieciowej interfejsów ENI Hyperplane (nie jest już potrzebne tworzenie interfejsu ENI dla każdej funkcji), co eliminuje historyczną karę w postaci zimnego startu dla funkcji Lambda w VPC.

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

Szybkie sprawdzenie

Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczyli się Państwo, że: środowiska uruchomieniowe Lambda obsługują języki Python, Node.js, Java, Go i inne, a w zaawansowanych przypadkach także niestandardowe środowiska uruchomieniowe oraz obrazy kontenerów; wyzwalacze, w tym API Gateway (synchronicznie) oraz S3/SNS (asynchronicznie), określają sposób przepływu zdarzeń do funkcji Lambda; natomiast rola wykonawcza, zmienne środowiskowe i konfiguracja VPC to kluczowe elementy bezpiecznego łączenia Lambda z innymi usługami AWS. W następnej części omówimy współbieżność Lambda, ograniczanie liczby wywołań i zarezerwowaną współbieżność.

Często zadawane pytania

Czy lekcja „Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery” jest bezpłatna?

Tak — pełny tekst „Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery”?

Napiszą funkcję Lambda, wybiorą środowisko uruchomieniowe, skonfigurują pamięć i limit czasu oraz połączą ją ze zdarzeniem S3 lub wyzwalaczem API Gateway. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?

Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?

Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Funkcje Lambda: środowiska uruchomieniowe, wyzwalacze i handlery
  2. Współbieżność, ograniczanie i zarezerwowana współbieżność
  3. Warstwy Lambda i pakiety wdrożeniowe
  4. Lambda@Edge i wzorce sterowane zdarzeniami
← Powrót do Cloud & IT Cert Prep