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 RequestHandlerZauważ, ż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 -
 
                