Budowanie funkcji Lambda
Funkcja AWS Lambda wykonuje kod po jej wywołaniu. W tym rozdziale szczegółowo omówiono wszystkie etapy cyklu życia funkcji AWS Lambda.
Kroki tworzenia funkcji Lambda
Cykl życia funkcji Lambda obejmuje cztery niezbędne kroki -
- Authoring
- Deploying
- Monitoring
- Troubleshooting
Tworzenie kodu lambda
Kod funkcji AWS Lambda można napisać w następujących językach -
- NodeJS
- Java,
- Python
- C#
- Go.
Możemy pisać kod dla AWS Lambda za pomocą konsoli AWS, AWS CLI, z Eclipse IDE, z Visual Studio IDE, serverless framework itp.
W poniższej tabeli przedstawiono listę języków oraz różnych narzędzi i IDE, których można użyć do napisania funkcji Lambda -
Język | IDE do tworzenia kodu lambda |
---|---|
NodeJS | Konsola AWS Lambda Visual Studio IDE |
Jawa | Eclipse IDE |
Pyton | Konsola AWS Lambda |
DO# | Visual Studio IDE .NET core |
Iść | Konsola AWS Lambda |
Wdrażanie kodu lambda
Po wybraniu języka, w którym chcesz napisać funkcję Lambda, istnieją dwa sposoby wdrożenia kodu -
- Bezpośrednio napisz kod w konsoli AWS
- Spakuj lub jar pliki ze wszystkimi plikami i zależnościami
Pamiętaj jednak, że plik zip musi mieć odpowiednie pozwolenie.
Testowanie kodu lambda
Kod Lambda można przetestować pod kątem zdarzeń wewnątrz konsoli AWS Lambda. Możliwe jest również przetestowanie funkcji Lambda z CLI AWS i Cli bezserwerowej. Konsola AWS posiada również dane o zdarzeniach, które mogą posłużyć jako przykładowe zdarzenia podczas testowania funkcji AWS Lambda.
Monitorowanie funkcji Lambda
Monitorowanie funkcji Lambda można wykonać za pomocą AWS CloudWatch. Możemy dodać niezbędne komunikaty dziennika w wybranych przez nas językach i zobaczyć to samo w AWS CloudWatch.
Aby rozpocząć pisanie funkcji Lambda, należy zastosować wzorzec. Poniżej przedstawiono główne podstawowe koncepcje, których należy przestrzegać podczas pisania funkcji Lambda -
Treser
Handler to nazwa funkcji lambda AWS, od której rozpoczyna się wykonanie. Pojawia się w konsoli AWS, jak pokazano poniżej -
Zauważ, że tutaj zmieniliśmy domyślny program obsługi na inną nazwę i zaktualizowaliśmy to samo w Handlerze -
Zwróć uwagę, że sposób wywoływania programu obsługi różni się od języków wybranych jako środowisko wykonawcze.
Parametry przekazane do handlera
Jeśli obserwujesz funkcję handlera, przekazywane są parametry event, context i call back function jak pokazano poniżej -
Event parametr zawiera wszystkie szczegóły dotyczące używanego wyzwalacza.
ContextParametr zasadniczo zajmuje się szczegółami czasu działania funkcji Lambda do wykonania. Możemy współdziałać z funkcją Lambda za pomocącontextparam. Zawiera szczegóły, takie jak czas pozostały do zakończenia funkcji przez AWS Lambda, tj. Limit czasu określony podczas tworzenia funkcji Lambda, nazwę funkcji Lambda, nazwę grupy Cloudwatch, szczegóły arn itp.
Przykład
Rozumiemy szczegóły uzyskane z obiektu kontekstu AWS Lambda na przykładzie -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log("context object details");
console.log(JSON.stringify(context));
callback(null, 'Lambda test');
};
Kiedy wykonujesz funkcję Lambda pokazaną powyżej, możesz zobaczyć następujące dane wyjściowe -
Wynik
Plik context szczegóły podano w następujący sposób -
{
"callbackWaitsForEmptyEventLoop":true,"logGroupName":"/aws/lambda/myfirstlambdafunction",
"logStreamName":"2018/05/20/[$LATEST]04f17ee4ff7048d5bb1fedffaa807c71","functionName":
"myfirstlambdafunction","memoryLimitInMB":"128","functionVersion":"$LATEST","invokeid":
"c931e21c-5bf3-11e8-acfe-47fdbb39eee9","awsRequestId":"c931e21c-5bf3-11e8-acfe-47fdbb39eee9",
"invokedFunctionArn":"arn:aws:lambda:us-east-1:625297745038:function:myfirstlambdafunction"
}
Zauważ, że ma szczegóły, takie jak functionName, memorylimit, requestId itp.
Logowanie
Dzienniki dodane wewnątrz funkcji Lambda są wyświetlane w AWS CloudWatch, gdy funkcja AWS jest wykonywana. Składnia dzienników będzie się różnić w zależności od wybranego języka. Na przykład wnodejs, to jest console.log.
Oto dane wyjściowe, które możesz zobaczyć w AWSCloudWatch -
Obsługa błędów
Funkcja AWS Lambda udostępnia funkcję zwrotną, która służy do powiadamiania funkcji Lambda o wystąpieniu błędu lub powodzeniu. Zauważ, że tutaj użyliśmy nodejs jako środowiska wykonawczego. Obsługa błędów będzie się różnić w zależności od wybranego języka.
Aby lepiej zrozumieć, spójrz na podany tutaj przykład -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
var error = new Error("There is error in code");
callback(error);
};
Wynik
Podczas testowania kodu Lambda można znaleźć dane wyjściowe, jak pokazano poniżej -
Szczegóły dziennika w następujący sposób -