AWS Lambda - Funkcja w Pythonie

W tym rozdziale utworzymy prostą funkcję AWS Lambda w Pythonie i po szczegółach zrozumiemy jej koncepcje pracy.

Przed przystąpieniem do pracy nad stworzeniem funkcji Lambda w AWS potrzebujemy wsparcia AWS Toolkit dla Pythona. W tym celu wykonaj kroki podane poniżej i obserwuj załączone zrzuty ekranu -

Krok 1

Zaloguj się do konsoli AWS i utwórz funkcję Lambda i wybierz język jako Python.

Krok 2

Teraz kliknij Create functioni wprowadź szczegóły tworzenia prostej AWS Lambda w Pythonie. Ten kod zwraca wiadomośćHello from Lambda using Python i wygląda jak pokazano tutaj -

Krok 3

Teraz zapisz zmiany i przetestuj kod, aby zobaczyć dane wyjściowe. Powinieneś zobaczyć następujące dane wyjściowe i dzienniki podczas testowania go w konsoli AWS za pomocą przycisku testu z interfejsu użytkownika.

Krok 4

Teraz możesz pisać kod w dowolnym edytorze lub IDE dla Pythona. Tutaj używamy kodu Visual Studio do pisania kodu. Powinieneś później spakować plik i przesłać go w konsoli AWS.

Tutaj spakowaliśmy kod i używamy go w konsoli AWS.

Krok 5

Teraz wybierz Upload a .ZIP file opcja, jak pokazano poniżej -

Szczegóły obsługi dla języka Python

Zauważ, że procedura obsługi musi być nazwą pliku, po której następuje nazwa funkcji. W powyższym przypadku nasza nazwa pliku tohellopython.py a nazwa funkcji to my_handler; więc przewodnik będzie hellopython.my_handler.

Po zakończeniu przesyłania i zapisaniu zmian w rzeczywistości wyświetla szczegóły pliku zip w edytorze online w konsoli AWS Lambda. Teraz przetestujmy kod, aby zobaczyć dane wyjściowe i dzienniki.

Przyjrzyjmy się teraz szczegółom funkcji Lambda, korzystając z następującego przykładowego kodu -

def my_handler(event, context):
   return "aws lambda in python using zip file"

W powyższym kodzie nazwa funkcji my_handler ma 2 parametry, zdarzenie i kontekst.

Obiekt kontekstu w Pythonie

Obiekt kontekstowy podaje szczegóły, takie jak nazwa funkcji Lambda, pozostały czas w milisekundach, identyfikator żądania, nazwa grupy obserwacyjnej w chmurze, szczegóły limitu czasu itp.

Metody i atrybuty dostępne na obiekcie kontekstu są pokazane w tabelach poniżej -

Sr.No Nazwa i opis metody
1

get_remaining_time_in_millis()

Ta metoda podaje pozostały czas w milisekundach do momentu zakończenia funkcji przez funkcję lambda

Sr.No Atrybut i opis
1

function_name

Daje to nazwę funkcji lambda aws

2

function_version

Daje to wersję wykonywanej funkcji lambda aws

3

invoked_function_arn

To poda szczegóły ARN.

4

memory_limit_in_mb

Pokazuje limit pamięci dodany podczas tworzenia funkcji lambda

5

aws_request_id

Daje to identyfikator żądania aws.

6

og_group_name

W ten sposób zostanie podana nazwa grupy Cloudwatch

7

log_stream_name

Spowoduje to podanie nazwy strumienia dziennika Cloudwatch, w którym zapisywane są dzienniki.

8

identity

W ten sposób uzyskasz szczegółowe informacje na temat dostawcy tożsamości amazon cognito w przypadku korzystania z zestawu SDK AWS Mobile. Podane szczegóły są następujące -

  • identity.cognito_identity_id
  • identity.cognito_identity_pool_id
9

client_context

Spowoduje to szczegółowe informacje o aplikacji klienckiej używanej z zestawem aws mobile sdk. Podane szczegóły są następujące -

  • client_context.client.installation_id
  • client_context.client.app_title
  • client_context.client.app_version_name
  • client_context.client.app_version_code
  • client_context.client.app_package_name
  • client_context.custom - zawiera informacje o niestandardowych wartościach z aplikacji klienta mobilnego
  • client_context.env - zawiera szczegółowe informacje o środowisku z AWS Mobile SDK

Zobaczmy działający przykład w Pythonie, który wyświetla szczegóły kontekstu. Przestrzegaj kodu podanego poniżej -

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

Odpowiednie wyjście powyższego kodu podano poniżej -

Logowanie za pomocą Pythona

Aby zalogować informacje za pomocą Pythona, możemy skorzystać z dostępnej funkcji print lub logger. Skorzystajmy z powyższego przykładu kontekstu i sprawdźmy wCloudWatch, czy logi są drukowane. Przestrzegaj następującego kodu -

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

Dane wyjściowe tego kodu w CloudWatch są pokazane poniżej -

Przyjrzyj się poniższemu przykładowi, aby zrozumieć, jak używać rejestratora do drukowania dzienników w CloudWatch -

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
   logger.info('Using logger to print messages to cloudwatch logs')
   return "aws lambda in python using zip file"

Wynik dla tego będzie taki, jak pokazano na zrzucie ekranu podanym poniżej -

Obsługa błędów w Pythonie dla funkcji Lambda

W tej sekcji zobaczmy działający przykład, który pokazuje, jak obsługiwać błędy w Pythonie. Obserwuj fragment kodu podany tutaj -

def error_handler(event, context):
   raise Exception('Error Occured!')

Ekran dziennika wygląda tak, jak pokazano na ilustracji tutaj -