TL;DR
Vous avez toujours voulu utiliser un framework Java tel que Spring Boot avec AWS Lambda?
En conclusion, il est relativement facile de placer un framework de proxy appelé aws-serverless-java-container au-dessus d'AWS Lambda. Est faisable.
Aujourd'hui, j'aimerais écrire à ce sujet tout en traduisant légèrement ce blog AWS.
AWS Open Source Blog Running APIs Written in Java on AWS Lambda
Les développeurs Java développent souvent avec des frameworks familiers tels que Spring et Spring Boot, Jersey et Spark.
Ces frameworks peuvent être utilisés pour déployer des Wars et Jars construits à l'aide d'un conteneur de servlet tel que Tomcat, ou pour être utilisés comme un Jar exécutable contenant une application.
Avec AWS sans serveur, vous pouvez créer un backend Web avec AWS Lambda et Amazon API Gateway, mais Lambda est responsable du calcul et API Gateway est responsable de la gestion REST.
Dans cet article, je présenterai le framework aws-serverless-java-container qui peut être utilisé avec Lambda.
En termes simples, aws-serverless-java-container est fait avec des frameworks tels que Spring, Spring Boot, Jersey et Spark. Il vous permet d'exécuter facilement votre application dans AWS Lambda avec des changements de code minimes.
aws-serverless-java-container agit comme un proxy entre le moteur d'exécution Lambda et le framework sélectionné, se faisant passer pour un moteur de servlet. Convertit l'événement de API Gateway en un objet de requête que l'infrastructure peut comprendre et l'objet de réponse de l'application dans un format que API Gateway peut comprendre.
Si vous souhaitez créer votre propre application avec Spring Boot 2 sur Lambda, voici la méthode d'installation détaillée. Quick start Spring Boot2
Clonons aws-serverless-java-container depuis awslab. Il contient des proxys et des exemples de code pour divers frameworks Java.
$ git clone https://github.com/awslabs/aws-serverless-java-container.git
Cliquez ici pour obtenir un proxy pour votre propre application
Vous pouvez les utiliser pour créer vos propres applications, mais par souci de simplicité, j'aimerais utiliser l'exemple Spring Boot 2 dans cet article.
Échantillons de Spring Boot2 Pet Shop
Tout d'abord, remplissons les conditions préalables suivantes.
Commençons par créer une application Java à l'aide de la commande mvn.
$ cd aws-serverless-java-container/samples/springboot2/pet-store/
$ mvn package
Si la commande mvn réussit, vous devriez avoir un serverless-spring-boot-example-1.0-SNAPSHOT.jar
dans le répertoire target
.
Ensuite, utilisez AWS SAM pour créer un package à déployer sur Lambda. Pour <VOTRE NOM DE BUCKET S3>
, spécifiez un nom de compartiment S3 approprié.
$ aws cloudformation package --template-file sam.yaml --output-template-file output-sam.yaml --s3-bucket <YOUR S3 BUCKET NAME>
Une fois que vous avez un package à déployer, il est temps de le déployer sur Lambda. Ce déploiement déploie AWS Lambda, qui gère la logique, et API Gateway, qui reçoit les demandes HTTPS et appelle Lambda.
$ aws cloudformation deploy --template-file output-sam.yaml --stack-name ServerlessSpringBootSample --capabilities CAPABILITY_IAM
Si le déploiement réussit, vous pouvez trouver le point de terminaison de l'API qui a été réellement créé avec la commande suivante.
$ aws cloudformation describe-stacks --stack-name ServerlessSpringBootSample
{
"Stacks": [
{
"StackId": "arn:aws:cloudformation:us-west-2:xxxxxxxx:stack/JerseySample/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
"Description": "Example Pet Store API written with spark with the aws-serverless-java-container library",
"Tags": [],
"Outputs": [
{
"Description": "URL for application",
"OutputKey": "SpringBootPetStoreApi",
"OutputValue": "https://xxxxxxx.execute-api.us-west-2.amazonaws.com/Prod/pets"
}
],
"CreationTime": "2016-12-13T22:59:31.552Z",
"Capabilities": [
"CAPABILITY_IAM"
],
"StackName": "JerseySample",
"NotificationARNs": [],
"StackStatus": "UPDATE_COMPLETE"
}
]
}
Le point de terminaison de l'API spécifié dans ʻOutputValue` sera l'URI de l'API déployée et lancée cette fois.
Vérifions l'opération.
$ curl https://xxxxxxx.execute-api.us-west-2.amazonaws.com/Prod/pets
Si le JSON résultant est renvoyé, vous avez réussi!
Comment était-ce? C'était si simple d'installer l'exemple d'application.
Spring Boot 2 est un excellent framework qui peut être facilement exécuté sur Lambda en suivant les étapes ci-dessus, mais si vous souhaitez introduire un framework plus petit avec un tour plus petit, vous pouvez également utiliser Spark
ou Micronaut
. Essayez-le.
En outre, pour les charges de travail préoccupées par la latence lorsque Lambda est démarré pour la première fois, une exécution native à l'aide de GraalVM fourni par Oracle est également possible.
Cliquez ici pour un exemple de conversion native utilisant Micronaut et GraalVM Micronaut X Graal VM Sample Pet Shop
Veuillez vous référer au matériel de présentation du JJUG CCC 2019 Fall comme information connexe dans cet article.
[](https://www.slideshare.net / AmazonWebServicesJapan / serverlessjava-199195000) À propos de Java à l'ère sans serveur
Recommended Posts