Jak tworzyć i dzielić się warstwami Lambda

Jak tworzyć i dzielić się warstwami Lambda
Lambda Warstwa to inteligentny sposób pakowania zależności i bibliotek, które upraszczają wdrożenie bez serwera. Warstwa to w rzeczywistości plik zip, który zawiera wszystkie zależności. Zmniejsza rozmiar pakietu wdrażania i sprawia, że ​​wdrożenie jest bardziej odporne. Czasami konieczne jest użycie funkcji wielu Lambda dla aplikacji, a każda funkcja Lambda wymaga na przykład takich samych bibliotek upraszanie biblioteka. W takim przypadku musisz utworzyć warstwę, która ma bibliotekę żądań i przymocować warstwę za pomocą funkcji Lambda. Na tym blogu zbadamy, jak stworzyć warstwę Lambda i jak ją używać w swojej funkcji Lambda.

Tworzenie warstwy Lambda

AWS zapewnia następujące cztery sposoby tworzenia warstw w Lambda:

  • Konsola AWS
  • Cloudformation
  • Lambda API
  • SAM (model aplikacji Serverless)

Na tym blogu użyjemy konsoli AWS do utworzenia warstwy Lambda, która obejmuje upraszanie moduł. Aby utworzyć warstwę, najpierw utwórz pusty katalog, aby dodać kod warstwy.

Ubuntu@ubuntu: ~ $ mkdir demo_requests

Przejdź do nowo utworzonego katalogu i zainstaluj upraszanie moduł.

Ubuntu@ubuntu: ~ $ cd demo_requests
Ubuntu@ubuntu: ~ $ pip3 instaluj żądania -t .

To polecenie instaluje upraszanie Biblioteka w tym folderze. Aby to użyć upraszanie Moduł jako warstwa, zapinaj ten folder najpierw za pomocą następującego polecenia:

Ubuntu@ubuntu: ~ $ zip -r demo_requests.Zip Demo_Requests

Po utworzeniu pliku pocztowego modułu przejdź do konsoli Lambda i kliknij Warstwy Zakładka z lewego panelu bocznego.

Otwiera konsolę Lambda Layers. Możesz dodać warstwę, klikając Utwórz warstwę przycisk.

Wygląda na to, że nowa strona wprowadza szczegóły warstwy Lambda. Podaj nazwę i opis warstwy. Do tego demo używamy Demo_layer Jako nazwa warstwy.

Teraz istnieją dwie opcje podania kodu warstwy - jeden to przesłanie pliku zip, a drugi to przesłanie kodu z konsoli S3. W przypadku tego demo przesyłamy plik zip, który zawiera upraszanie moduł.

Dla Kompatybilna architektura opcje, pozostaw go puste i nie zaznacz żadnego pola dla tej opcji. Ponieważ nasz kod warstwy obejmuje upraszanie moduł, który jest modułem Python, czas wykonania tej warstwy to pyton. Po wprowadzeniu wszystkich wymaganych konfiguracji warstwy kliknij tworzyć przycisk, aby utworzyć warstwę.

Używanie warstwy Lambda w swojej funkcji Lambda

W poprzedniej sekcji utworzyliśmy warstwę Lambda, która obejmuje upraszanie moduł. Teraz w tej sekcji dodajemy tę warstwę Lambda w naszej funkcji Lambda. Aby dodać warstwę Lambda w funkcji Lambda, kliknij funkcję Lambda i przewiń w dół do warstwy Sekcja.

Kliknij reklamęd warstwa przycisk, aby dodać nową warstwę do swojej funkcji Lambda. Otwiera nową stronę, która prosi o szczegóły warstwy Lambda. Istnieją trzy rodzaje źródeł warstw Lambda:

  • Warstwy AWS
  • Niestandardowe warstwy
  • Określić ARN

Aby dodać warstwę do funkcji Lambda, którą utworzyliśmy na naszym koncie, musimy wybrać opcję niestandardowych warstw jako źródła warstwy. Po wybraniu źródła warstwy z listy wybierz warstwę utworzoną w poprzedniej sekcji i kliknij Dodać przycisk, aby dodać warstwę w swojej funkcji Lambda.

Teraz, po dodaniu warstwy, nie musisz instalować upraszanie moduł w Twojej funkcji lambda podczas importowania upraszanie moduł za pomocą warstwy Lambda.

Dzielenie warstw Lambda

Domyślnie warstwa Lambda jest prywatna i może być używana tylko na koncie AWS. Ale możesz zarządzać uprawnieniami warstwy Lambda za pomocą interfejsu wiersza poleceń, aby udostępnić warstwy innym konto lub organizacji AWS. AWS Console nie ma funkcji udostępniania warstw Lambda z innymi kontami AWS. Dodaj-warstwy-wersję Metoda służy do udostępniania warstw za pomocą interfejsu wiersza poleceń. W nadchodzących sekcjach bloga zobaczymy, w jaki sposób możemy udostępnić warstwy Lambda z innymi kontami lub organizacjami AWS.

Udostępnianie warstwy Lambda na określone konto AWS

Aby podzielić się warstwą Lambda, Dodaj-warstwy-wersję Zastosowana jest metoda interfejsu wiersza poleceń. Musisz określić nazwę warstwy, którą chcesz udostępnić ID instrukcji, numeru wersji i identyfikatora konta AWS, do którego chcesz udostępnić warstwę. Poniżej znajduje się polecenie udostępnienia warstwy Lambda z innym konto AWS za pomocą interfejsu wiersza poleceń:

Ubuntu@ubuntu: ~ $ AWS Lambda add-layer-permission \
--nazwa warstwy demo_layer \
--Action Lambda: getlayerversion \
--Oświadczenie-ID oświadczenie-1 \
--numer wersji 1
--główny \

Udostępnianie warstwy Lambda publicznie

Aby podzielić się warstwą Lambda na Twoim koncie AWS, aby być dostępnym na wszystkich kontach AWS, wystarczy zmienić główny parametr polecenia, który jest używany w poprzednim rozdziale. Zamiast określić identyfikator konta AWS, musisz użyć „*” jako głównego, aby publicznie udostępniać warstwę Lambda na wszystkich kontach AWS.

Ubuntu@ubuntu: ~ $ AWS Lambda add-layer-permission \
--nazwa warstwy demo_layer \
--instrukcja-ID instrukcja-2 \
--Action Lambda: getlayerversion \
--główny * \
--numer wersji 1

Udostępnianie warstwy Lambda ze wszystkimi kontami AWS w organizacji

Podobnie jak konto AWS, warstwy Lambda można również udostępniać wszystkim kontom AWS w organizacji. Aby udostępnić warstwę Lambda ze wszystkimi kontami w organizacji, musisz dodać Identyfikator organizacji parametr w Dodaj-warstwy-wersję Komenda. Oto polecenie dzielenia się warstwą Lambda we wszystkich kontach AWS w organizacji:

Ubuntu@ubuntu: ~ $ AWS Lambda add-layer-permission \
--nazwa warstwy demo_layer \
--instrukcja-ID instrukcja-3 \
--Action Lambda: getlayerversion \
--główny * \
--Identyfikator organizacji \
--numer wersji 1

Wniosek

Na tym blogu zbadaliśmy, jak tworzyć i udostępniać warstwę Lambda, aby ponownie wykorzystać małe fragmenty naszego kodu do różnych funkcji Lambda. Nauczyliśmy się, jak utworzyć plik zip biblioteki żądań Pythona i utworzyliśmy warstwę Lambda za pomocą tego pliku zip. Po utworzeniu warstwy Lambda dodaliśmy tę warstwę Lambda do naszej funkcji Lambda, aby zwiększyć ponowne użycie kodu. Omówiliśmy również, w jaki sposób możemy udostępnić warstwy Lambda z określonymi kontami AWS i wszystkimi kontami w organizacji.