Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Quarkus
  3. Déployer dans Amazon Web Services
Extrait - Quarkus Développer des applications microservices en Java pour le cloud et Kubernetes
Extraits du livre
Quarkus Développer des applications microservices en Java pour le cloud et Kubernetes Revenir à la page d'achat du livre

Déployer dans Amazon Web Services

AWS Lambda

Amazon Web Services ou AWS est le cloud public d’Amazon.

AWS Lambda est la solution serverless de Function-as-a-Service (FaaS) d’AWS.

Quarkus propose trois extensions pour écrire des fonctions AWS :

  • Quarkus Amazon Lambda : permet l’écriture de fonctions avec l’API d’AWS Lambda.

  • Quarkus Amazon Lambda HTTP : permet l’écriture de fonctions avec l’une des API HTTP de Quarkus.

  • Funqy Amazon Lambda : permet l’écriture de fonctions avec Funqy, une API agnostique du fournisseur cloud. L’utilisation de Funqy sera vue dans le chapitre Funqy : des fonctions portables.

Chaque extension permet d’utiliser toutes les fonctionnalités de Quarkus pour le développement d’une fonction AWS Lambda.

Le déploiement d’une fonction AWS Lambda nécessite la CLI aws ainsi que la CLI sam. Il faut aussi avoir créé un rôle d’exécution qui sera utilisé par la CLI aws via l’option de commande --role.

Vous obtiendrez plus d’informations dans le guide de démarrage de la CLI aws :  https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html

1. Quarkus Amazon Lambda

Pour créer un projet Quarkus pour déploiement comme une fonction AWS Lambda, il est conseillé d’utiliser l’archétype Maven fourni par Quarkus :

mvn archetype:generate \ 
       -DarchetypeGroupId=io.quarkus \ 
       -DarchetypeArtifactId=quarkus-amazon-lambda-archetype \ 
       -DarchetypeVersion=2.16.1.Final 

Cette commande va créer un projet en Java 11, AWS Lambda ne supportant pas encore Java 17, avec la dépendance Maven io.quarkus:quarkus-amazon-lambda et plusieurs exemples de fonctions.

Il est aussi possible de créer un projet de manière standard, puis d’ajouter la dépendance Maven à suivre. Attention de créer le projet avec l’option --no-code pour que la dépendance RESTEasy ne soit pas incluse par défaut lors de la création du projet.

<dependency> 
    <groupId>io.quarkus</groupId> 
    <artifactId>quarkus-amazon-lambda</artifactId> 
</dependency>...

Services AWS : S3, SNS...

Quarkus propose un ensemble d’extensions permettant d’accéder aux services cloud d’Amazon Web Services dans le pack d’extension Quarkus Amazon Services disponible dans le Quarkiverse.

Au jour d’écriture de ce livre, les services suivants sont supportés :

  • Cognito User Pools Client

  • DynamoDB

  • Identity and Access Management (IAM)

  • Key Management Service (KMS)

  • S3

  • Secret Manager

  • Simple Email Service (SES)

  • Simple Notification Service (SNS)

  • Simple Queue Service (SQS)

  • Systems Manager (anciennement Simple Systems Manager, ou SSM)

L’extension Quarkus Amazon Services fournit un dev service qui va démarrer un conteneur LocalStack permettant d’émuler les différents services d’AWS en local.

Pour utiliser LocalStack, il faut ajouter les dépendances Maven suivantes, fournissant une implémentation de client HTTP synchrone (pour le client URL Connection) et asynchrone (pour le client Netty) :

<dependency> 
  <groupId>software.amazon.awssdk</groupId> 
  <artifactId>url-connection-client</artifactId> 
</dependency> 
<dependency> 
  <groupId>software.amazon.awssdk</groupId> 
  <artifactId>netty-nio-client</artifactId> 
</dependency> 

LocalStack va utiliser un profil de la CLI aws nommé localstack ; certaines manipulations décrites dans ce guide vont le nécessiter. Pour créer le profil, vous pouvez lancer la commande suivante, puis vous laisser guider : aws configure --profile localstack.

Voici ce que vous devriez obtenir (notez que vous pouvez mettre n’importe quelle valeur comme Access Key ID et Secret Access Key car elles ne seront pas utilisées par LocalStack) :

images/10EP01.png

Les extensions Amazon Services utilisent le SDK AWS v2 ; elles supportent les modes de développement synchrone et asynchrone. Le mode de développement asynchrone utilise la classe CompletableFuture du JDK.

Pour les utiliser, il faut ajouter les dépendances Maven correspondant aux clients HTTP utilisés.

En mode synchrone, deux clients HTTP sont supportés : le client URL Connection et le client Apache HTTP Client. Par défaut, le client URL Connection est utilisé, il faut alors ajouter la dépendance suivante (qui...