AWS Lambda avec Java

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 aux événements sur différentes ressources AWS, ce qui déclenche les fonctions AWS Lambda. La tarification est payante, ce qui signifie que nous ne déboursons pas notre argent sur les fonctions lambda inactives.

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

2. Dépendances 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 àMaven repository.

Nous avons également besoin desMaven Shade Plugin pour construire 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 invoquer une fonction lambda, nous devons spécifier un gestionnaire; Il y a 3 façons de créer un gestionnaire:

  1. Création d'unMethodHandler personnalisé

  2. Implémentation de l'interfaceRequestHandler

  3. Implémentation de l'interfaceRequestStreamHandler

Voyons comment procéder à l'aide d'exemples de code.

3.1. PersonnaliséMethodHandler

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.

De plus, l'objet optionnelContext 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. InterfaceRequestHandler

Nous pouvons également implémenter lesRequestHandler dans notre classe et remplacer la méthodehandleRequest 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. InterfaceRequestStreamHandler

Nous pouvons également implémenterRequestStreamHandler dans notre classe et simplement remplacer la méthodehandleRequest.

La différence est que les objetsInputStream,ObjectStream etContext sont passés en 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 fichierjar sera créé sous le dossiertarget.

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

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

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

  1. “Select blueprint” puis sélectionnez «Blank Function”

  2. “Configure triggers” (dans notre cas, nous n'avons aucun déclencheur ni événement)

  3. «Configurer la fonction»:

    • Nom: indiquezMethodHandlerLambda,

    • Description: Tout ce qui décrit notre fonction lambda

    • Runtime: sélectionnezjava8

    • Type d'entrée de code et ensemble de fonctions: Sélectionnez «Upload a .ZIP and Jar file” et cliquez sur le bouton«Upload” ». Sélectionnez le fichier contenant le code lambda.

    • Moins deLambda function handler and role:

      • Nom du gestionnaire: indiquez le nom du gestionnaire de fonction lambdacom.example.MethodHandlerLambda::handleRequest

      • Nom du rôle: si d'autres ressources AWS sont utilisées dans la fonction lambda, fournissez un accès en créant / utilisant un rôle existant et définissez également le modèle de stratégie.

    • Moins deAdvanced settings:

      • Mémoire: Fournissez la mémoire qui sera utilisée par notre fonction lambda.

      • Délai d'attente: sélectionnez une heure d'exécution de la fonction lambda pour chaque demande.

  4. Une fois que vous avez terminé avec toutes les entrées, cliquez sur «Next” qui vous montrera pour revoir la configuration.

  5. Une fois la révision terminée, cliquez sur «Create Function”.

6. Appeler la fonction

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

  • Cliquez sur votre fonction lambda dans les listes puis cliquez sur le bouton «Test”

  • Une fenêtre contextuelle contenant la valeur factice pour l'envoi de données apparaîtra. Remplacer les données avec“example”

  • Cliquez sur le bouton «Save and test”

Sur l'écran, vous pouvez voir la sectionExecution result avec une sortie renvoyée avec succès comme:

"Hello World - example"

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 peut être trouvéover on Github.