AWS Lambda - Fonction en Java

Dans ce chapitre, expliquons en détail comment créer en détail une fonction AWS Lambda simple en Java.

Création d'un fichier JAR dans Eclipse

Avant de commencer à créer une fonction lambda dans AWS, nous avons besoin de la prise en charge de la boîte à outils AWS pour Eclipse. Pour tout renseignement sur l'installation de celui-ci, vous pouvez vous référer auEnvironment Setup chapitre de ce tutoriel.

Une fois que vous avez terminé l'installation, suivez les étapes indiquées ici -

Étape 1

Ouvrez Eclipse IDE et créez un nouveau projet avec AWS Lambda Java Project. Observez la capture d'écran ci-dessous pour une meilleure compréhension -

Étape 2

Une fois que vous sélectionnez Next, il vous redirigera l'écran ci-dessous -

Étape 3

Maintenant, un code par défaut est créé pour le type d'entrée Custom. Une fois que vous cliquezFinish bouton le projet est créé comme indiqué ci-dessous -

Étape 4

Maintenant, faites un clic droit sur votre projet et exportez-le. SélectionnerJava / JAR fichier du Export assistant et cliquez sur Next.

Étape 5

Maintenant, si vous cliquez sur Next, vous serez invité à enregistrer le fichier dans le dossier de destination qui vous sera demandé lorsque vous cliquerez sur suivant.

Une fois le fichier enregistré, revenez à AWS Console et créez la fonction AWS Lambda pour Java.

Étape 6

Maintenant, téléchargez le .jar fichier que nous avons créé à l'aide du Upload bouton comme indiqué dans la capture d'écran ci-dessous -

Détails du gestionnaire pour Java

Handler est package name et class name. Regardez l'exemple suivant pour comprendre le gestionnaire en détail -

Exemple

package com.amazonaws.lambda.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
      
        { @Override public String handleRequest(Object input, Context context) { context.getLogger().log("Input: " + input); // TODO: implement your handler return "Hello from Lambda!"; } } 
      

Observez qu'à partir du code ci-dessus, le gestionnaire sera com.amazonaws.lambda.demo.LambdaFunctionHandler

Maintenant, testons les changements et voyons le résultat -

Objet de contexte en Java

L'interaction avec l'exécution d'AWS Lambda est effectuée à l'aide du contexte. Il fournit les méthodes suivantes à utiliser dans Java -

Sr.Non Méthodes de contexte et description
1

getMemoryLimitInMB()

cela donnera la limite de mémoire que vous avez spécifiée lors de la création de la fonction lambda.

2

getFunctionName()

cela donnera le nom de la fonction lambda.

3

getFunctionVersion()

cela donnera la version de la fonction lambda en cours d'exécution.

4

getInvokedFunctionArn()

cela donnera l'ARN utilisé pour appeler la fonction.

5

getAwsRequestId()

cela donnera l'identifiant de la demande aws. Cet identifiant est créé pour la fonction lambda et il est unique. L'identifiant peut être utilisé avec le support aws en cas de problème.

6

getLogGroupName()

cela donnera le nom du groupe aws cloudwatch lié à la fonction aws lambda créée. Il sera nul si l'utilisateur iam n'a pas l'autorisation de journalisation cloudwatch.

sept

getClientContext()

cela donnera des détails sur l'application et l'appareil lorsqu'il est utilisé avec aws mobile sdk. Il donnera des détails tels que le nom et le code de la version, l'identifiant du client, le titre, le nom du package d'application. Cela peut être nul.

8

getIdentity()

cela donnera des détails sur l'identité amazon cognito lorsqu'il est utilisé avec aws mobile sdk. Cela peut être nul.

9

getRemainingTimeInMillis()

cela donnera le temps restant d'exécution en millisecondes lorsque la fonction est terminée après le délai spécifié.

dix

getLogger()

cela donnera le journal lambda lié à l'objet de contexte.

Maintenant, mettons à jour le code donné ci-dessus et observons la sortie de certaines des méthodes répertoriées ci-dessus. Observez l'exemple de code ci-dessous pour une meilleure compréhension -

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!";
   }
}

Une fois que vous exécutez le code ci-dessus, vous pouvez trouver la sortie comme indiqué ci-dessous -

Journaux pour le contexte

Vous pouvez observer la sortie suivante lorsque vous visualisez votre sortie de journal -

La mémoire allouée à la fonction Lambda est de 512 Mo. Le temps alloué est de 25 secondes. Le temps restant tel qu'affiché ci-dessus est de 24961, soit en millisecondes. Donc 25000 - 24961 qui équivaut à 39 millisecondes est utilisé pour l'exécution de la fonction Lambda. Notez que le nom du groupe Cloudwatch et l'identifiant de la demande sont également affichés comme indiqué ci-dessus.

Notez que nous avons utilisé la commande suivante pour imprimer les journaux en Java -

System.out.println (“log message”)

La même chose est disponible dans CloudWatch. Pour cela, accédez aux services AWS, sélectionnezCloudWatchservices et cliquez Logs.

Maintenant, si vous sélectionnez la fonction Lambda, elle affichera les journaux par date comme indiqué ci-dessous -

Connexion à Java

Vous pouvez également utiliser Lambdalogger en Java pour consigner les données. Observez l'exemple suivant qui montre la même chose -

Exemple

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!";
   }
}

Le code ci-dessus vous donnera la sortie suivante -

La sortie dans CloudWatch sera comme indiqué ci-dessous -

Gestion des erreurs dans Java pour la fonction Lambda

Cette section explique comment gérer les erreurs dans la fonction Java pour Lambda. Observez le code suivant qui montre la même chose -

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");
   } 
}

Notez que les détails de l'erreur sont affichés dans json format avec errorMessage Error from AWS Lambda. ÉgalementErrorType et stackTrace donne plus de détails sur l'erreur.

La sortie et la sortie de journal correspondante du code donné ci-dessus seront comme indiqué dans les captures d'écran suivantes données ci-dessous -