AWS Lambda - Funkcja w Javie
W tym rozdziale wyjaśnimy szczegółowo, jak szczegółowo stworzyć prostą funkcję AWS Lambda w Javie.
Tworzenie pliku JAR w Eclipse
Przed przystąpieniem do pracy nad tworzeniem funkcji lambda w AWS, potrzebujemy wsparcia AWS dla Eclipse. Aby uzyskać wskazówki dotyczące instalacji tego samego, możesz zapoznać się zEnvironment Setup rozdział w tym samouczku.
Po zakończeniu instalacji wykonaj kroki podane tutaj -
Krok 1
Otwórz Eclipse IDE i utwórz nowy projekt za pomocą AWS Lambda Java Project. Zobacz zrzut ekranu podany poniżej, aby lepiej zrozumieć -
Krok 2
Po wybraniu Next, przekieruje Cię do ekranu pokazanego poniżej -
Krok 3
Teraz tworzony jest domyślny kod dla typu danych wejściowych Custom. Po kliknięciuFinish przycisk projekt zostanie utworzony, jak pokazano poniżej -
Krok 4
Teraz kliknij prawym przyciskiem myszy swój projekt i wyeksportuj go. WybierzJava / JAR plik z Export kreatora i kliknij Next.
Krok 5
Teraz, jeśli klikniesz Next, pojawi się monit o zapisanie pliku w folderze docelowym, o który zostanie wyświetlony monit po kliknięciu dalej.
Po zapisaniu pliku wróć do konsoli AWS i utwórz funkcję AWS Lambda dla Javy.
Krok 6
Teraz prześlij plik .jar plik, który utworzyliśmy przy użyciu Upload przycisk, jak pokazano na zrzucie ekranu podanym poniżej -
Szczegóły obsługi języka Java
Handler jest package name i class name. Spójrz na poniższy przykład, aby szczegółowo zrozumieć obsługę -
Przykład
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
Zauważ, że z powyższego kodu, handlerem będzie com.amazonaws.lambda.demo.LambdaFunctionHandler
Przetestujmy teraz zmiany i zobaczmy wyniki -
Obiekt kontekstu w Javie
Interakcja z uruchomieniem AWS Lambda odbywa się za pomocą kontekstu. Udostępnia następujące metody do użycia w Javie -
Sr.No | Metody kontekstowe i opis |
---|---|
1 | getMemoryLimitInMB() da to limit pamięci określony podczas tworzenia funkcji lambda. |
2 | getFunctionName() to da nazwę funkcji lambda. |
3 | getFunctionVersion() da to wersję uruchomionej funkcji lambda. |
4 | getInvokedFunctionArn() to da ARN użyty do wywołania funkcji. |
5 | getAwsRequestId() da to identyfikator żądania aws. Ten identyfikator jest tworzony dla funkcji lambda i jest unikalny. Identyfikatora można używać z obsługą aws, jeśli napotkasz jakiekolwiek problemy. |
6 | getLogGroupName() da to nazwę grupy AWS Cloudwatch połączoną z utworzoną funkcją aws lambda. Będzie zerowa, jeśli użytkownik iam nie ma uprawnień do rejestrowania w chmurze. |
7 | getClientContext() w ten sposób uzyskasz szczegółowe informacje o aplikacji i urządzeniu w przypadku korzystania z zestawu aws mobile sdk. Poda szczegóły, takie jak nazwa i kod wersji, identyfikator klienta, tytuł, nazwa pakietu aplikacji. Może być zerowa. |
8 | getIdentity() dostarczy to szczegółowych informacji na temat tożsamości amazon cognito w przypadku używania z aws mobile sdk. Może być zerowa. |
9 | getRemainingTimeInMillis() da to pozostały czas wykonania w milisekundach, gdy funkcja zostanie zakończona po określonym czasie. |
10 | getLogger() da to rejestrator lambda połączony z obiektem kontekstu. |
Teraz zaktualizujmy kod podany powyżej i przyjrzyjmy się wynikom niektórych metod wymienionych powyżej. Zapoznaj się z przykładowym kodem podanym poniżej, aby lepiej zrozumieć -
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
System.out.println("AWS Lambda function name: " + context.getFunctionName());
System.out.println("Memory Allocated: " + context.getMemoryLimitInMB());
System.out.println("Time remaining in milliseconds: " + context.getRemainingTimeInMillis());
System.out.println("Cloudwatch group name " + context.getLogGroupName());
System.out.println("AWS Lambda Request Id " + context.getAwsRequestId());
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Po uruchomieniu kodu podanego powyżej możesz znaleźć dane wyjściowe podane poniżej -
Dzienniki kontekstu
Podczas przeglądania danych wyjściowych dziennika można obserwować następujące dane wyjściowe:
Pamięć przydzielona dla funkcji Lambda to 512 MB. Przeznaczony czas to 25 sekund. Pozostały czas, jak pokazano powyżej, wynosi 24961, czyli w milisekundach. Zatem 25000 - 24961, co odpowiada 39 milisekundom, jest używane do wykonania funkcji Lambda. Zwróć uwagę, że nazwa grupy Cloudwatch i identyfikator żądania są również wyświetlane, jak pokazano powyżej.
Zauważ, że użyliśmy następującego polecenia do wydrukowania dzienników w Javie -
System.out.println (“log message”)
To samo jest dostępne w CloudWatch. W tym celu przejdź do usług AWS, wybierzCloudWatchservices i kliknij Logs.
Teraz, jeśli wybierzesz funkcję Lambda, wyświetli ona datę logów, jak pokazano poniżej -
Logowanie w Javie
Możesz również użyć Lambdaloggera w Javie do logowania danych. Zwróć uwagę na następujący przykład, który pokazuje to samo -
Przykład
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("Input: " + input);
logger.log("AWS Lambda function name: " + context.getFunctionName()+"\n");
logger.log("Memory Allocated: " + context.getMemoryLimitInMB()+"\n");
logger.log("Time remaining in milliseconds: " + context.getRemainingTimeInMillis()+"\n");
logger.log("Cloudwatch group name " + context.getLogGroupName()+"\n");
logger.log("AWS Lambda Request Id " + context.getAwsRequestId()+"\n");
// TODO: implement your handler
return "Hello from Lambda!";
}
}
Kod pokazany powyżej daje następujące dane wyjściowe -
Dane wyjściowe w CloudWatch będą wyglądać tak, jak pokazano poniżej -
Obsługa błędów w Javie dla funkcji Lambda
Ta sekcja wyjaśnia, jak obsługiwać błędy w Javie dla funkcji Lambda. Obserwuj następujący kod, który pokazuje to samo -
package com.amazonaws.lambda.errorhandling;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
throw new RuntimeException("Error from aws lambda");
}
}
Zwróć uwagę, że szczegóły błędu są wyświetlane w formacie json format z errorMessage Error from AWS Lambda. PonadtoErrorType i stackTrace podaje więcej szczegółów na temat błędu.
Dane wyjściowe i odpowiadające im dane wyjściowe dziennika kodu podanego powyżej będą wyglądać tak, jak pokazano na poniższych zrzutach ekranu podanych poniżej -