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 -