AWS Lambda avec Java

1. Introduction

AWS Lambda est un service informatique sans serveur fourni par Amazon pour réduire la configuration des serveurs, du système d'exploitation, de l'évolutivité, etc. AWS Lambda est capable d'exécuter du code sur AWS Cloud.

Il s'exécute en réponse à des événements sur différentes ressources AWS, ce qui déclenche les fonctions AWS Lambda. Le prix est pay-as-you-go, ce qui signifie que nous ne débourserons pas notre argent sur les fonctions lambda inactives.

Ce tutoriel nécessite un compte AWS valide; vous pouvez en créer un ici.

2. Dépendances de Maven

Pour activer AWS lambda, nous avons besoin de la dépendance suivante dans notre projet:

 com.amazonaws aws-lambda-java-core 1.1.0 

Cette dépendance peut être trouvée dans le référentiel Maven.

Nous avons également besoin du plugin Maven Shade pour créer l'application lambda:

 org.apache.maven.plugins maven-shade-plugin 2.4.3  false    package  shade    

3. Créer un gestionnaire

En termes simples, pour appeler une fonction lambda, nous devons spécifier un gestionnaire; il existe 3 façons de créer un gestionnaire:

  1. Création d'un MethodHandler personnalisé
  2. Implémentation de l' interface RequestHandler
  3. Implémentation de l' interface RequestStreamHandler

Voyons comment le faire à l'aide d'exemples de code.

3.1. MethodHandler personnalisé

Nous allons créer une méthode de gestion qui sera le point d'entrée pour les demandes entrantes. Nous pouvons utiliser le format JSON ou des types de données primitifs comme valeurs d'entrée.

En outre, l' objet Context facultatif nous permettra d'accéder aux informations utiles disponibles dans l'environnement d'exécution Lambda:

public class LambdaMethodHandler { public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello World - " + input; } }

3.2. Interface RequestHandler

Nous pouvons également implémenter le RequestHandler dans notre classe et remplacer la méthode handleRequest qui sera notre point d'entrée pour les requêtes:

public class LambdaRequestHandler implements RequestHandler { public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello World - " + input; } }

Dans ce cas, l'entrée sera la même que dans le premier exemple.

3.3. Interface RequestStreamHandler

Nous pouvons également implémenter RequestStreamHandler dans notre classe et remplacer simplement la méthode handleRequest .

La différence est que les objets InputStream , ObjectStream et Context sont passés en tant que paramètres:

public class LambdaRequestStreamHandler implements RequestStreamHandler { public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) { String input = IOUtils.toString(inputStream, "UTF-8"); outputStream.write(("Hello World - " + input).getBytes()); } }

4. Créer un fichier de déploiement

Avec tout configuré, nous pouvons créer le fichier de déploiement en exécutant simplement:

mvn clean package shade:shade

Le fichier jar sera créé dans le dossier cible .

5. Créer une fonction Lambda via la console de gestion

Connectez-vous à AWS Amazon, puis cliquez sur Lambda sous services. Cette page affichera la liste des fonctions lambda, qui est déjà créée.

Voici les étapes nécessaires pour créer notre lambda:

  1. «Sélectionnez le plan» , puis sélectionnez « Fonction vierge»
  2. «Configurer les déclencheurs» (dans notre cas, nous n'avons aucun déclencheur ni événement)
  3. «Configurer la fonction»:
    • Nom: Fournissez MethodHandlerLambda ,
    • Description: tout ce qui décrit notre fonction lambda
    • Runtime: sélectionnez java8
    • Type d'entrée de code et ensemble de fonctions: Sélectionnez « Télécharger un fichier .ZIP et Jar» et cliquez sur le bouton « Télécharger» . Sélectionnez le fichier qui contient le code lambda.
    • Sous Gestionnaire de fonctions Lambda et rôle :
      • Nom du gestionnaire: indiquez le nom du gestionnaire de fonction lambda com.baeldung.MethodHandlerLambda :: handleRequest
      • Nom du rôle: si d'autres ressources AWS sont utilisées dans la fonction lambda, fournissez l'accès en créant / en utilisant le rôle existant et définissez également le modèle de stratégie.
    • Sous Paramètres avancés:
      • Mémoire: fournit la mémoire qui sera utilisée par notre fonction lambda.
      • Timeout: sélectionnez une heure pour l'exécution de la fonction lambda pour chaque requête.
  4. Une fois que vous avez terminé avec toutes les entrées, cliquez sur « Suivant» qui vous montrera pour revoir la configuration.
  5. Une fois l'examen terminé, cliquez sur « Créer une fonction» .

6. Appelez la fonction

Une fois la fonction AWS lambda créée, nous la testerons en transmettant des données:

  • Cliquez sur votre fonction lambda à partir des listes, puis cliquez sur « Test » bouton
  • Une fenêtre contextuelle apparaîtra contenant une valeur fictive pour l'envoi de données. Remplacer les données par "Baeldung"
  • Cliquez sur le bouton « Enregistrer et tester»

Sur l'écran, vous pouvez voir la section Résultat de l' exécution avec une sortie renvoyée avec succès comme:

"Hello World - Baeldung"

7. Conclusion

Dans cet article d'introduction rapide, nous avons créé une application AWS Lambda simple à l'aide de Java 8, l'avons déployée sur AWS et l'avons testée.

Le code source complet de l'exemple d'application est disponible sur Github.