Maison > Java > javaDidacticiel > le corps du texte

Comment créer, publier et utiliser des couches pour les fonctions Java Lambda

WBOY
Libérer: 2024-07-18 13:59:57
original
684 Les gens l'ont consulté

How to create, publish and use layers for Java Lambda functions

Introduction

En guise de préparation à l'étude de la façon dont l'utilisation des couches Lambda avec la fonction Lambda et le runtime Java 21 affecte les heures de démarrage à froid (avec et sans activation de SnapStart) et à chaud, j'aimerais donner une introduction sur la façon de créer, publier et utiliser des couches pour la fonction Java (21) Lambda dans le modèle SAM.

Qu'est-ce que la couche Lambda

Une couche Lambda est une archive de fichier .zip qui contient du code ou des données supplémentaires. Les couches contiennent généralement des dépendances de bibliothèque, un environnement d'exécution personnalisé ou des fichiers de configuration.

Avantages de l'utilisation de la couche Lambda

Il existe plusieurs raisons pour lesquelles vous pourriez envisager d'utiliser des calques :

  • Pour réduire la taille de vos packages de déploiement. Au lieu d'inclure toutes vos dépendances de fonction ainsi que votre code de fonction dans votre package de déploiement, placez-les dans une couche. Cela permet de garder les packages de déploiement petits et organisés.
  • Pour séparer la logique des fonctions principales des dépendances. Avec les couches, vous pouvez mettre à jour vos dépendances de fonctions indépendamment de votre code de fonction, et vice versa. Cela favorise la séparation des préoccupations et vous aide à vous concentrer sur la logique de votre fonction.
  • Pour partager les dépendances entre plusieurs fonctions. Après avoir créé une couche, vous pouvez l'appliquer à n'importe quel nombre de fonctions de votre compte. Sans couches, vous devez inclure les mêmes dépendances dans chaque package de déploiement individuel.
  • Pour utiliser l'éditeur de code de la console Lambda. L'éditeur de code est un outil utile pour tester rapidement les mises à jour mineures du code de fonction. Cependant, vous ne pouvez pas utiliser l'éditeur si la taille de votre package de déploiement est trop grande. L'utilisation de couches réduit la taille de votre package et peut débloquer l'utilisation de l'éditeur de code.

Comment créer, publier et utiliser des couches pour les fonctions Java 21 Lambda avec AWS CLI v2 et le modèle SAM

Par souci d'exploration, nous utiliserons l'exemple d'application pour créer la couche Lambda avec le runtime Java 21 en empaquetant les dépendances suivantes dans la couche :

  • aws-lambda-java-core
  • aws-lambda-java-events
  • org-crac
  • slf4j-simple
  • jackson-dataformat-xml

Pour créer la couche Lambda dont nous avons besoin :

  • Exécution Java 21
  • Version Maven (3.8.6 ou ultérieure) capable de créer et de packaging des applications Java 21
  • AWS CLI v2

La couche Lambda nécessite que les dépendances soient intégrées dans un seul uber-jar. Pour cela, nous utilisons deux plugins dans le pom.xml. Le plugin maven-compiler-plugin compile le code source. Le plugin maven-shade-plugin regroupe nos artefacts dans un seul uber-jar. Ensuite, nous devons exécuter

mvn clean package
Copier après la connexion

pour construire notre application.

Lorsque nous ajoutons une couche à une fonction Lambda avec le runtime Java, Lambda charge le contenu de la couche dans le répertoire /opt de cet environnement d'exécution. Pour chaque environnement d'exécution Lambda, la variable PATH inclut déjà des chemins de dossier spécifiques dans le répertoire /opt. Pour garantir que la variable PATH récupère le contenu de notre couche, notre fichier .zip de couche doit avoir ses dépendances dans les chemins de dossier suivants : java/lib

Par exemple, le fichier .zip de couche résultant que nous créons avec notre exemple d'application a la structure de répertoires suivante :

aws-pure-java-21-common-lambda-layer-content.zip
└ java
    └ lib
        └ aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar
Copier après la connexion

ce qui peut être réalisé en exécutant les commandes suivantes sous Linux :

  • mkdir java
  • mkdir java/lib
  • cp -r target/aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar java/lib/
  • zip -r aws-pure-java-21-common-lambda-layer-content.zip java

Pour publier cette couche Lambda avec le runtime Java 21, nous devons exécuter la commande suivante avec AWS CLI v2 :

aws lambda publish-layer-version --layer-name aws-pure-java-21-common-lambda-layer --zip-file fileb://aws-pure-java-21-common-lambda-layer-content.zip --compatible-runtimes java21
Copier après la connexion

Avec le paramètre supplémentaire --compatible-architectures "x86", nous pouvons définir les architectures matérielles compatibles comme x86 (par défaut) ou arm64.

En réponse, AWS fournira l'ARN de la couche Lambda que nous devrons référencer plus tard, qui ressemble à celui-ci :

arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1

Veuillez noter que le dernier paramètre est la version de la couche Lambda qui est toujours 1 lorsque nous publions la couche pour la première fois et qui sera incrémentée de un avec les mises à jour ultérieures de la couche Lambda existante.

Afin d'attacher le calque à votre fonction, nous pouvons procéder comme suit :

  • when using AWS CLI v2 and invoking aws lambda create-function command add --layers paramater with layer ARN like arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
  • when using AWS SAM template like we'll explore in our next article (here is the concrete example) add Layers parameter to the Lambda function like this:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: GetProductByIdWithPureJava21LambdaWithCommonLayer
      AutoPublishAlias: liveVersion
      Layers:
        - !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
      Handler: software.amazonaws.example.product.handler.GetProductByIdHandler::handleRequest
Copier après la connexion

Conclusion

In this article I gave an introduction about how to create, publish and use layers for Java 21 Lambda functions AWS CLI v2 and the SAM template. In the next article published under the AWS Lambda SnapStart series I'll explore how the usage of the (different) Lambda layers with function having Java 21 runtime affects the cold (with and without enabling SnapStart) and warm start times.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal