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 - 
  |  
      
| 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 - 
  |  
      
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 -