AWS Lambda - Wprowadzenie

AWS Lambda to usługa, która zajmuje się obliczaniem Twojego kodu bez żadnego serwera. Mówi się, że jest to obliczenia bezserwerowe. Kod jest wykonywany na podstawie reakcji na zdarzenia w usługach AWS, takie jak dodawanie / usuwanie plików w zasobniku S3, aktualizacja Amazon DynamoDBtables, żądanie HTTP z bramy Amazon Api itp.

Kod AWS Lambda można pisać w NodeJS, Javie, C #, Pythonie i Go. W tym rozdziale szczegółowo omówimy tworzenie funkcji AWS Lambda w konsoli AWS.

Konsola AWS

Zaloguj się do konsoli AWS pod linkiem https://aws.amazon.com/console. Po zalogowaniu się przekieruje Cię do ekranu, na którym wyświetlane są usługi AWS.

Przykład: tworzenie funkcji

Pozwól nam zrozumieć funkcjonalność konsoli AWS za pomocą przykładu. Kliknij Lambda (zaznaczona powyżej), przekieruje do tworzenia funkcji, jak pokazano poniżej -

Kliknij Create function a na ekranie zostaną wyświetlone następujące informacje -

Zwróć uwagę, że domyślnie ta opcja to Author from scratch. Ta opcja pozwala napisać kod Lambda od podstaw. Będzie miał po prostu prostą funkcję zhello world wiadomość.

Druga opcja Blue prints zawiera następujące szczegóły.

Zawiera szczegóły kodu już napisanego dla niektórych usług aws w językach dostępnych w AWS Lambda. W przypadku, gdy musisz napisać kod AWS Lambda dla wszystkich usług, które możesz sprawdzićblue prints i zacznij.

Trzecia opcja Serverless Application Repository posiada konfigurację aplikacji serverless, która pomoże wdrożyć kod AWS Lambda.

W dalszej części dyskusji będziemy pracować nad pierwszą opcją, w której utworzymy funkcję lambda AWS za pomocą Author from scratch.

Zanim utworzymy funkcję Lambda, potrzebna będzie rola tj. Pozwolenie na pracę z usługami AWS oraz aws lambda. Później rola musi zostać przypisana do funkcji lambda aws.

Tworzenie ról w konsoli AWS

Aby utworzyć rolę w konsoli AWS, przejdź do usług konsoli AWS i kliknij IAM, jak pokazano poniżej -

Teraz, jeśli klikniesz IAM, pojawi się ekran, jak pokazano poniżej -

Jeśli wybierzesz Roles, na ekranie widać następujące przyciski -

Teraz kliknij Create role. Poprosi Cię o wybranie usługi, w której chcesz użyć utworzonej roli.

Ponieważ musimy używać tej roli w AWS Lambda, wybierz Lambda i kliknij Next:Permissionsjak pokazano powyżej. Następny ekran wyświetla nazwę polityki, która jest dostępna w ramach usług AWS. Możesz wybrać polisę tutaj -

Na przykład, jeśli chcesz zezwolić AWS Lambda na współpracę z S3 i DynamoDB, musisz wybrać politykę. W polu wyszukiwania wprowadź usługę AWS i kliknij pole wyboru. Możesz wybrać wiele zasad, a następnie kliknąćNext:Review.

Możliwe jest również stworzenie własnej polityki. Na przykład, istnieje tabela dynamodb i musisz nadać uprawnienia tylko tej tabeli, w takich przypadkach możesz utworzyć politykę.

Kliknij Create policyjak pokazano na powyższym ekranie. Poniżej przedstawiono szczegóły wyświetlane na ekranie.

Wybierz Servicedla którego tworzysz politykę. Później wyświetli dane dla działań,resources i Request conditions.

Teraz powinniśmy wybrać usługę. WybierzmyAWS Dynamodb z wyszukiwania. Actions ma następujące szczegóły -

Teraz wprowadź Access levelchcesz przekazać DynamoDB. Następnie,resources wyświetli następujące szczegóły -

Teraz wybierz typ zasobu tabeli. Możesz zobaczyć następujące dane wyjściowe -

Aby uzyskać pozwolenie na stół, musisz Add ARN. ARN to szczegóły, które są unikalne dla tabeli utworzonej w AWS DynamoDB. Szczegóły uzyskasz, gdy tabela zostanie utworzona w dynamodb.

Jeśli klikniesz Add ARN i wyświetli następujące szczegóły -

Teraz, jeśli wpiszesz ARN i Region, Account i Tablenazwa zostanie wypełniona. Powinieneś kliknąćAddprzycisk, aby dodać politykę. Podobnie możesz tworzyć zasady dla innych usług.

Tutaj wybraliśmy dwie zasady AmazonS3FullAccess i AmazonDynamoDBFullACcess. Daliśmy pełny dostęp do S3 i DynamoDB w tej roli. Zaleca się jednak, aby zezwolić tylko na niezbędne zasobniki i tabele.

Możesz wykonać kroki omówione wcześniej, aby utworzyć zasady przy użyciu ARN.

Krok 1

Kliknij Create roleprzycisk, aby utworzyć rolę. Wszystkie utworzone role są wyświetlane, jak pokazano -

Krok 2

Pamiętaj, że możesz wybrać wymaganą rolę, jeśli potrzebujesz modyfikacji dla utworzonej roli. Jeśli wybierzemyAuthor from scratch optionmusisz wejść Name, Runtime and Role.

Krok 3

Możesz zobaczyć następujące szczegóły w Runtime lista rozwijana -

Krok 4

Możesz wybrać żądane środowisko wykonawcze i postępować zgodnie z ilustracją.

Role Lista rozwijana zawiera następujące opcje -

  • Choose an existing role − Spowoduje to wyświetlenie wszystkich ról utworzonych w rolach uprawnień.

  • Create new role from template(s) −Umożliwi to utworzenie roli i wyświetli uprawnienia do wyboru dla tej roli. Obserwuj zrzut ekranu, aby lepiej zrozumieć.

  • Create a custom role − Pozwala to użytkownikowi na tworzenie zasad, jak omówiliśmy wcześniej.

Krok 5

Wybierz runtime, rolei dodaj funkcję. KliknijCreate functionprzycisk, aby utworzyć funkcję lambda. Następny wyświetlany ekran jest następujący -

Części funkcji AWS Lambda

Istnieją dwie części funkcji AWS Lambda:Configuration i Monitoring. Omówmy szczegółowo każdy z nich.

Konfiguracja

Konfiguracja zawiera następujące funkcjonalności.

Add Triggers

Wyzwalacze, które należy dodać do funkcji AWS Lambda są wyświetlane w następujący sposób -

Zauważ, że kiedy wybieramy wyzwalacz, musimy dodać szczegóły konfiguracji dla tego wyzwalacza. Na przykład dla wyzwalacza S3 musimy wybrać nazwę zasobnika; dla wyzwalacza Dynamodb musimy wybrać nazwę tabeli.

Przykład

Zobaczmy przykład szczegółów konfiguracji wyzwalacza S3 -

Teraz dodaj szczegóły konfiguracji dla dodanego wyzwalacza S3 -

Tutaj musisz wybrać bucket name, event type na którym chcesz wyzwolić Lambdę, prefiks i wzorzec filtru, jeśli istnieje i Add spust.

Dodawanie kodu w Lambdzie

Teraz powinniśmy skupić się na napisaniu kodu Lambda. Aby dodać kod w aws lambda, istnieją trzy opcje -

  • Korzystanie z wbudowanego edytora
  • Korzystanie z pliku .zip
  • Prześlij plik z Amazon S3

Pokazuje to poniższy zrzut ekranu -

Omówmy szczegółowo każdy z nich.

Using the inline editor

Wbudowany edytor kodu, w którym możesz napisać swój kod, wygląda następująco:

Możesz napisać swój kod, wybierając odpowiedni język. Tutaj możesz ponownie wybrać środowisko wykonawcze.

Obserwuj poniższy zrzut ekranu, aby lepiej zrozumieć -

Kod należy wpisać index.js.Handler. Szczegóły będą się różnić w zależności od czasu działania. Dlanodejs, to jest filename.export function który jest teraz index.lambda handler.

Upload a .ZIP file

Możesz najpierw napisać kod, spakować go i przesłać plik zip, wybierając Upload a .ZIP file.

Upload a file from Amazon S3

Możesz przesłać plik w zasobniku S3 i wybrać opcję Upload a file from Amazon S3.

Zauważ, że dla .ZIP i S3 nie będzie można zmienić środowiska wykonawczego.

Zmienne środowiska

Biorą pary klucz-wartość i dzielą się nimi z kodem AWS Lambda. Możemy użyć zmiennych środowiskowych w AWS Lambda do przechowywania szczegółów połączenia z bazą danych, szczegółów pliku w celu przechowywania danych wyjściowych, szczegółów pliku dziennika itp.

Tagi

Są to pary klucz-wartość dodawane do AWS Lambda w celu lepszej organizacji funkcji, gdy są używane w różnych regionach. W przypadku prostego użycia nie jest to wymagane. Kiedy jest utworzonych wiele funkcji Lambda, tagowanie pomaga w filtrowaniu i zarządzaniu funkcjami Lambda.

Rola wykonawcza

W tym miejscu możesz ponownie zmienić rolę, jeśli nie została wykonana poprawnie na początku tworzenia funkcji Lambda. Tutaj możesz zaktualizować lub utworzyć nową rolę. Udostępnia te same opcje, które były wyświetlane na początku tworzenia funkcji Lambda.

Podstawowe ustawienia

Tutaj musisz wpisać krótki opis tego, co robi twoja funkcja Lambda. Wybierz pamięć i limit czasu, które są wymagane dla funkcji Lambda.

Sieć

Umożliwia to wybranie VPC, które umożliwi dostęp do funkcji Lambda z VPC. Domyślnie nie jest wybrane żadne VPC.

Debugowanie i obsługa błędów

W przypadku debugowania i obsługi błędów możesz wybrać usługę AWS, aby przesłać szczegóły. Dostępne opcje toNone, SNS i SQS.

Konkurencja

Pozwala to na przydzielenie określonego limitu jednoczesnych wykonań dozwolonych dla tej funkcji.

Audyt i zgodność

Zawiera dzienniki, które są zarządzane za pomocą AWS CloudTrail.

Po zakończeniu musisz zapisać zmiany za pomocą przycisku Zapisz, jak pokazano tutaj -

Teraz, jeśli klikniesz Testprzycisk, zapyta o zdarzenie testowe. Możesz zdać przykładowe zdarzenie testowe w następujący sposób -

Utworzone zdarzenie testowe jest pokazane tutaj -

Teraz zapisz zdarzenie testowe i kliknij przycisk testu, aby zobaczyć wykonanie funkcji AWS Lambda -

Kod dla index.js wygląda następująco -

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   console.log(event.key1);
   console.log(event.key2);
   console.log(event.key3);
   callback(null, 'Lambda test');
};

Zauważ, że funkcja zwrotna jest wywoływana, gdy wystąpi błąd lub powodzenie. Jeśli się powiedzie, możesz zobaczyćLambda test zostanie wyświetlony.

Monitorowanie

Wybierz zakładkę monitorowanie, aby zobaczyć szczegóły wykonania funkcji Lambda. Wykresy pokazują szczegóły dotyczące czasu wykonania, zaistniałych błędów itp.

Możesz również przeglądać dzienniki w Cloudwatch. W tym celu przejdź do usług AWS i wybierz Cloudwatch, jak pokazano -

Teraz wybierz logi z lewej strony i wprowadź nazwę swojej funkcji w filtrze -