Amazon DVA-C02: Serverless i AWS Lambda — Przewodnik do nauki

Część AWS Developer Associate DVA-C02 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.

Wersje, aliasy, warstwy i paczkowanie

Wersje Lambda to niezmienne migawki kodu i konfiguracji tworzone za pomocą API PublishVersion (na przykład

undefined

). Używaj wersji, aby zapewnić powtarzalne wydania, a następnie twórz aliasy (

undefined

lub

undefined

) jako stabilne wskaźniki, które mogą również przenosić konfigurację routingu do dzielenia ruchu między wersjami w celu stopniowego wdrażania (gradual rollouts). Warstwy (Layers) zapewniają sposób na współdzielenie wspólnych bibliotek natywnych lub pakietów środowiska uruchomieniowego;

undefined

pozwala dołączać zależności (np. skompilowane pliki binarne) oddzielnie od paczki funkcji, dzięki czemu buildy są mniejsze, a zimne starty (cold starts) szybsze. Do paczkowania preferuj małe archiwa zip dla szybkich wdrożeń (lub uploady do S3 dla większych artefaktów) i stosuj obrazy kontenerów, gdy potrzebujesz pokaźnych plików binarnych lub niestandardowych środowisk uruchomieniowych;

undefined

zarejestruje obrazy przechowywane w ECR (obrazy kontenerów obsługują znacznie większe rozmiary). Częste pułapki to umieszczanie poświadczeń na stałe w zmiennych środowiskowych, przekraczanie limitów rozmiaru paczki wdrożeniowej i zapominanie, że warstwy są wersjonowane i niezmienne: aktualizuj zależności, publikując nową wersję warstwy i aktualizując konfigurację funkcji. Aby wykonać programistyczny rollback, zaktualizuj alias, aby wskazywał na poprzednią wersję (

undefined

) w celu zminimalizowania wpływu operacyjnego.

Środowisko wykonawcze, dostrajanie wydajności i łagodzenie zimnych startów

Moc procesora (CPU) w Lambda skaluje się wraz z pamięcią, więc poprawa wydajności obciążeń ograniczonych przez CPU (CPU-bound) zazwyczaj odbywa się poprzez zwiększenie ustawienia MemorySize (za pomocą

undefined

), a nie przez zmianę osobnego parametru dla CPU; mierz wydajność za pomocą metryk AWS X-Ray i CloudWatch, aby znaleźć optymalny punkt między czasem trwania a kosztem. Na zimne starty (cold starts) wpływa rozmiar paczki, kod inicjalizacyjny, użycie sieci VPC (opóźnienie dołączania ENI) oraz środowisko uruchomieniowe języka; łagodź je poprzez odchudzanie kodu inicjalizacyjnego, przenoszenie ciężkich bibliotek do warstw, używanie Provisioned Concurrency (

undefined

) lub stosowanie obrazów kontenerów ze zoptymalizowanymi punktami wejścia (entrypoints). Dla funkcji podłączonych do VPC unikaj skoków opóźnień przy zimnych startach, używając VPC endpoints dla S3/DynamoDB lub RDS Proxy, aby ograniczyć rotację połączeń (connection churn) i koszty NAT Gateway; upewnij się, że rola wykonawcza Lambda zawiera zarządzaną politykę AWSLambdaVPCAccessExecutionRole i że podsieci mają wystarczającą przestrzeń adresów IP dla ENI. Uważaj na pułapki, takie jak synchroniczne timeouty: ustaw timeout funkcji na wartość niższą niż timeouty usług zależnych (downstream), aby zapewnić spójny model błędu dla wywołujących, i używaj tokenów idempotencji przy ponowieniach, ponieważ usługi takie jak SQS, SNS i Kinesis zapewniają semantykę dostarczania „co najmniej raz” (at-least-once).

Dostęp do VPC, pamięć efemeryczna i kontrole bezpieczeństwa

Gdy umieszczasz funkcję Lambda w VPC, musisz skonfigurować identyfikatory podsieci (subnet IDs) i grupy bezpieczeństwa (security groups) w konfiguracji funkcji; funkcja używa wtedy interfejsów ENI w tych podsieciach i potrzebuje ścieżek sieciowych do usług zewnętrznych. Aby uzyskać dostęp do S3 lub DynamoDB bez NAT, utwórz VPC endpoints (typu Gateway dla S3, typu Interface dla wielu innych usług). W przypadku baz danych preferuj RDS Proxy, aby pulować połączenia i ograniczyć gwałtowne tworzenie nowych połączeń. Katalog /tmp zapewnia pamięć efemeryczną dla środowiska wykonawczego i jest zapisywalny podczas wywołania; skonfiguruj większą pamięć efemeryczną w razie potrzeby (ustawienie

undefined

), ale w miarę możliwości projektuj funkcje jako bezstanowe. Zabezpiecz sekrety, przechowując je w AWS Secrets Manager lub Parameter Store (SSM) i nadając roli Lambda minimalne uprawnienia (least privilege); pobieraj sekrety podczas zimnego startu za pomocą

undefined

lub używaj zmiennych środowiskowych zaszyfrowanych kluczem KMS określonym w KMSKeyArn funkcji. Częste błędy deweloperów to brakujące VPC endpoints prowadzące do timeoutów, osadzanie kluczy w postaci zwykłego tekstu w kodzie oraz zapominanie o rotacji lub efektywnym buforowaniu sekretów, aby uniknąć throttlingu wywołań API Secrets Manager.

Integracje zdarzeń, obsługa błędów, testowanie lokalne i strategie wdrażania

Lambda integruje się natywnie z wieloma źródłami zdarzeń: powiadomieniami o zdarzeniach S3, DynamoDB Streams, Kinesis, SQS i API Gateway. Dla źródeł strumieniowych dostosuj rozmiar paczki (batch size) i parallelizationFactor, monitoruj IteratorAge i obsługuj częściowe niepowodzenia, ponieważ Lambda będzie ponawiać próby dla nieudanych paczek i może blokować dalsze przetwarzanie, gdy błędy się utrzymują. Dla wywołań asynchronicznych używaj kolejek martwych listów (DLQ) lub Destinations do przechwytywania niepowodzeń (skonfiguruj wywołanie asynchroniczne z miejscami docelowymi onFailure/onSuccess). Funkcje wyzwalane przez S3 muszą chronić przed rekurencyjnymi wywołaniami, gdy zapisujesz dane z powrotem do tego samego bucketu, poprzez sprawdzanie kluczy obiektów lub używanie tagów obiektów. Testowanie lokalne najlepiej przeprowadzać za pomocą AWS SAM CLI (sam build; sam local invoke; sam local start-api) lub skonteneryzowanych środowisk uruchomieniowych Lambda; testy jednostkowe mogą używać moto lub lokalnego mockowania, ale testy integracyjne powinny być uruchamiane na rzeczywistych zasobach AWS na efemerycznych kontach testowych. Wdrożenia powinny wykorzystywać wersjonowane funkcje i aliasy oraz przesuwanie ruchu (traffic shifting) za pomocą CodeDeploy lub UpdateAlias z RoutingConfig w celu realizacji wdrożeń kanarkowych (canary) lub liniowych; zaimplementuj hooki PreTraffic i PostTraffic do weryfikacji. Typowe pułapki to ignorowanie idempotencji przy ponownych próbach, nieobsługiwanie częściowych odpowiedzi z BatchGetItem (sprawdzaj UnprocessedKeys) oraz używanie zbyt szerokich ról IAM do wykonania funkcji.

Praktyczny problem: Scenariusz użycia

Scenariusz: Firma PhotoSpot Inc używa funkcji Lambda w języku Python, która przetwarza obrazy przesłane do S3, zapisuje metadane w DynamoDB i wywołuje API zewnętrznego dostawcy do optymalizacji obrazów. Funkcja wymaga szybkiego działania przy zimnym starcie, bezpiecznych poświadczeń API, bezpiecznych wycofań (rollback) oraz dostępu do proxy RDS hostowanego w VPC w celu wzbogacania metadanych.

Wyzwanie: Zmniejszenie opóźnienia zimnego startu dla operacji przesyłania widocznych dla użytkownika, ochrona i rotacja klucza API zewnętrznego dostawcy oraz umożliwienie bezpiecznych wycofań bez przestojów i kontrolowanego przesuwania ruchu.

Zalecane podejście:

  1. Buduj i publikuj niezmienne wydania: użyj AWS CLI lub boto3 do aktualizacji kodu, następnie boto3.client(’lambda’).publish_version(FunctionName=‘PhotoProcessor’) i utwórz/zaktualizuj alias boto3.client(’lambda’).update_alias(FunctionName=‘PhotoProcessor’, Name=‘prod’, FunctionVersion=‘7’, RoutingConfig={‘AdditionalVersionWeights’: {‘8’: 0.1}}).
  2. Ogranicz zimne starty: skonfiguruj Provisioned Concurrency dla aliasu boto3.client(’lambda’).put_provisioned_concurrency_config(FunctionName=‘PhotoProcessor’, Qualifier=‘prod’, ProvisionedConcurrentExecutions=10) i przenieś ciężkie biblioteki natywne do opublikowanej warstwy (boto3.client(’lambda’).publish_layer_version).
  3. Zabezpiecz poświadczenia: przechowuj klucz API zewnętrznego dostawcy w AWS Secrets Manager, nadaj roli Lambda uprawnienia o najmniejszym wymaganym zakresie (least-privilege) i pobieraj go podczas zimnego startu za pomocą boto3.client(‘secretsmanager’).get_secret_value(SecretId=secret_arn), zamiast osadzać sekrety w kodzie lub w zmiennych środowiskowych w postaci zwykłego tekstu.
  4. Obsługa VPC i połączeń: umieść funkcję w prywatnych podsieciach z grupami bezpieczeństwa, użyj RDS Proxy do dostępu do bazy danych, aby uniknąć burzy połączeń, i utwórz VPC endpoint dla S3, aby odczyt obrazów nie wymagał NAT.

Uzasadnienie: Używanie wersji i aliasów z przesuwaniem ruchu umożliwia bezpieczne wdrożenia (rollout) i natychmiastowe wycofanie zmian poprzez zmianę docelowej wersji aliasu. Provisioned Concurrency i warstwy zmniejszają opóźnienie inicjalizacji, podczas gdy Secrets Manager centralizuje rotację poświadczeń i minimalizuje ryzyko ich ujawnienia. RDS Proxy i VPC endpoints obniżają opóźnienia i koszty operacyjne, redukując nadmiarowe połączenia i zależność od NAT.


Wszystkie domeny · Amazon API Gateway i integracja aplikacji

Przećwicz te pytania → · Testy na czas na ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Zdaj egzamin →

Przeglądaj Amazon →

Related guides

Dostęp all-in-one

Jedna subskrypcja. Każdy egzamin.

Każdy plan odblokowuje nieograniczone wyszukiwanie odpowiedzi, testy praktyczne, wyjaśnienia AI i pełną bibliotekę zasobów — w ponad 20 językach.

Miesięczny
24.87
Just €0.83/day
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

Najlepsza wartość
12 miesięcy
179.87
Just €0.49/daySave 40%
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

✓ Plan darmowy w zestawie · ✓ Anuluj w dowolnym momencie · ✓ Wszystkie plany odblokowują pełny produkt