web-dev-qa-db-fra.com

Comment exécuter AWS lambda avec Open JDK 11+ en tant que runtime personnalisé?

AWS permet de créer la fonction Lambda avec Java 8 ( OpenJDK 8 ) comme runtime. J'ai besoin de créer une fonction simple en utilisant Open JDK 11. Quelque chose comme ca:

package example;

import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.LambdaLogger;

public class Hello {
    public String myHandler(int myCount, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("received : " + myCount);
        return String.valueOf(myCount);
    }
}

Il existe une option permettant d'utiliser un runtime personnalisé et un tutorial qui contient un exemple avec Shell. Cependant il n'y a pas d'exemple avec Java.

Quelqu'un a-t-il déjà affaire à un lambda AWS avec un runtime personnalisé Java?

10
veben

J'étais également curieux de savoir pourquoi nous n'avons pas encore vu de runtimes personnalisés pour Java, donc il y a environ un mois, j'ai commencé à jouer avec l'idée d'en créer un dans Java 11 en utilisant Jigsaw pour produire un petit runtime. Bien que ce ne soit pas exactement un tutoriel, j'ai écrit un fichier Readme assez détaillé sur la façon de le construire et le code est assez simple à suivre.

Voici mon projet sur GitHub:

https://github.com/andthearchitect/aws-lambda-Java-runtime

Je viens de le publier récemment et c'est très certainement un POC, donc utilisez-le à vos risques et périls.

Corretto semble intéressant, mais je suppose qu'il y aura toujours des gens plus à l'aise avec la version officielle d'OpenJDK. J'espère que cela peut être le point de départ d'un runtime open source prêt pour la production pour Java.

11
Jberg

Il n'est plus nécessaire d'utiliser un runtime personnalisé, car AWS Lambda prend désormais en charge Java 11 .

Cependant, les fonctions Lambda qui utilisent ce runtime seront exécutées avec Amazon Corretto 11 et non OpenJDK 11.

Si vous souhaitez exécuter votre fonction Lambda avec OpenJDK 11 au lieu de Corretto 11, l'utilisation d'un runtime personnalisé est toujours recommandée.

4
Jacob G.

Comme Arun Gupta dit , ils travaillent sur Corretto 11 builds correspondant à Open JDK 11 et sortira avec le temps pour les tests avant avril 2019 ...

Cependant, il est toujours possible d'ajouter un runtime personnalisé , qui permet de "mettre en œuvre un runtime AWS Lambda dans n'importe quel langage de programmation".

Il n'y a pas d'exemple pour JDK 11 dans la documentation officielle d'AWS, mais j'ai trouvé un projet, qui utilise un runtime personnalisé de 25 Mo, construit à partir de JDK 11, avec jlink. Vous pouvez jeter un oeil à cela lien

2
veben

Je doute que vous puissiez encore le faire. Selon AWS:

"Nous travaillons sur des versions de Corretto 11 correspondant à Open JDK 11 et sortirons avec du temps pour les tests avant avril 2019."

https://forums.aws.Amazon.com/thread.jspa?messageID=875742&tstart=https://aws.Amazon.com/blogs/opensource/Amazon-corretto- no-cost-distribution-openjdk-long-term-support /

0
Sofo Gial