Czym jest AWS Lambda?
AWS Lambda jest usługą obliczeniową serverless, dostępną na AWS. Mówiąc inaczej, AWS Lambda to usługa bezserwerowa, czyli Function as a service, w skrócie FaaS. Dzięki niej możliwe będzie stworzenie kodu i zarządzanie swoją aplikacją bez potrzeby utrzymywania własnych serwerów. Ogólne działanie AWS Lambda zaczyna się od zdarzenia (eventu), które powoduje wyzwolenie działania Lambdy. Zdarzenia te mogą pochodzić z różnych serwisów bądź z systemów zewnętrznych.
Zasadniczo Lambdę można wywołać w dwóch trybach - w trybie synchronicznym i asynchronicznym. W trybie synchronicznym wysyła się żądanie i otrzymuje na nie odpowiedź. W trybie asynchronicznym żądanie jest wysyłane do kolejki zdarzeń. Korzystanie z AWS Lambda jako usługi Function as a Service będzie zatem korzystne głównie ze względu na fakt, że użytkownik płaci tylko za czas przetwarzania danej funkcji.
Najważniejsze parametry Lambdy
Tworzenie lambdy wymaga wzięcia pod uwagę dwóch najważniejszych parametrów- memory oraz timeout. Przyjrzyjmy się im bliżej, by zrozumieć, na czym konkretnie one polegają.
AWS Lambda Memory
Memory to dostępna pamięć RAM, która jest przypisana do instancji usługi. Maksymalny limit pamięci wynosi 10 GB. Jeśli limit zostanie przekroczony, instancja zostaje zatrzymana.
AWS Lambda Timeout
AWS LambdaTimeout definiuje się natomiast jak maksymalny czas wykonywania funkcji. Parametr timeout pozwala na znaczące ograniczenie kosztów. Możemy określić odpowiedni dla budżetu czas wykonywania danej funkcji, a jeżeli zostanie on przekroczony, to funkcja zostanie zatrzymana. Co ważne maksymalny czas dla funkcji wynosi 15 minut.
Języki obsługiwane przez AWS Lambda
Języki obsługiwane przez Lambdę (AWS Lambda Languages) to obecnie:
Ponadto możliwe jest korzystanie z dodatkowych języków programowania przy użyciu interfejsu API środowiska wykonawczego (np. AWS Lambda Typescript). W zależności od wybranego języka nieco inaczej będzie wyglądało tworzenie funkcji. Na przykład wykorzystując język Node.js, kod funkcji można dostarczyć w formie zbudowanej zewnętrznie paczki w formacie ZIP bądź napisać go bezpośrednio we wbudowanym edytorze do tworzenia funkcji.
Jakie zdarzenia wyzwalają działanie Lambdy?
Zdarzeniem wyzwalającym działanie Lambdy może być właściwie wszystko. Natomiast eventem może być zarówno jedno, jak i więcej zdarzeń z serwisów AWS bądź z systemów zewnętrznych. Funkcję wywołuje się w jednym z dwóch trybów. Pierwszym z nich jest tryb synchroniczny, zwany także typem request/response. W tym trybie wysyłane będzie żądanie, na które następnie przychodzi odpowiedź.
Drugi typ wywoływania funkcji, to typ asynchroniczny, polegający na wysyłaniu żądania do lambdy i dodawaniu go do kolejki zdarzeń. Tryb asynchroniczny zwany jest także trybem event.
Czym są AWS Lambda Layers?
AWS LambdaLayers to pliki .zip, zawierające dodatkowy kod bądź inną zawartość, np. biblioteki, dane czy pliki konfiguracyjne. Warstw używa się głównie w celu zmniejszenia rozmiaru pakietu wdrożeniowego. Uruchamiając lambdę, zawartość warstwy zostaje wypakowana do folderu /opt znajdującego się w kontenerze i zostaje dostępna dla kodu. Zastosowanie warstwy ma znaczenie także dla ominięcia limitu wielkości kodu zastosowanego w danym edytorze.
Pierwsza funkcja w AWS Lambda krok po kroku.
Wiesz już, czym jest i jak działa AWS Lambda- zatem skupmy się na tym, jak stworzyć pierwszą funkcję serverless. Gotowy? No więc zaczynamy!
- Zacznij od utworzenia swojej Lambdy. W tym celu uruchom Lambda Service w AWS i kliknij okienko „Create Function”. Następnie wybierz opcję „Author from scratch” i wprowadź nazwę swojej funkcji. Nazwa jest oczywiście dowolna. Następnie wybierz język programowania, jakim będziesz się posługiwać. Może być to np. AWS Lambda Python czy AWS Lambda Java. Wybierz okno "Create a new role with basic Lambda permissions" i kliknij przycisk "Create function". W ten sposób stworzyliśmy Lambdę z domyślnym kodem, który wymaga aktualizacji.
- Przejdź do sekcji "Function code" i zaktualizuj kod. Aby zapisać wyniki, kliknij przycisk "Save".
Aby funkcja uruchamiała się w odpowiednim momencie, musimy stworzyć jej wyzwalacz. W tym celu klikamy przycisk „Add trigger”. Zdarzeniem mogą być np. komendy, pliki załadowane do S3 czy cała masa innych triggerów. Po wybraniu wyzwalacza kliknij "Add".
Twoja funkcja jest gotowa do testów.
Kod funkcji AWS Lambda jest tworzony w stylu stateless, a więc jest bezstanowy i nie ma żadnego wpływu na wcześniejsze wdrożenia. Warto pamiętać również o tym, by na bieżąco usuwać niepotrzebne funkcje. Korzystanie z AWS Lambda jest korzystne również ze względów finansowych- bazowe koszty hostowania kodu są zerowe, a płaci się dopiero za wykonanie kodu. Całkowita kwota do zapłaty wynika więc z czasu wykorzystywania zasobów przez aplikację, a czas działania serwera jest zaokrąglany do 100 milisekund.
Podsumowanie
Stworzenie prostej funkcji jest zaledwie wstępem do potężnych możliwości, jakie daje korzystanie z AWS Lambda. Z jej pomocą możesz tworzyć własne mikroserwisy i aplikacje bez konieczności tworzenia własnych serwerów.