Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Utilisation de couches pour les fonctions Lambda Java

Mode de mise au point
Utilisation de couches pour les fonctions Lambda Java - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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, une exécution personnalisée, ou des fichiers de configuration. La création d’une couche implique trois étapes générales :

  1. Empaquetez le contenu de votre couche. Cela signifie créer une archive de fichiers .zip contenant les dépendances que vous souhaitez utiliser dans vos fonctions.

  2. Créez la couche dans Lambda.

  3. Ajoutez la couche à vos fonctions.

Cette rubrique contient des étapes et des conseils sur la manière d’empaqueter et de créer correctement une couche Lambda Java avec des dépendances de bibliothèque externes.

Prérequis

Pour suivre les étapes de cette section, vous devez disposer des éléments suivants :

Note

Assurez-vous que la version Java à laquelle Maven fait référence est identique à la version Java de la fonction que vous souhaitez déployer. Par exemple, pour une fonction Java 21, la commande mvn -v doit indiquer la version 21 de Java dans la sortie :

Apache Maven 3.8.6 ... Java version: 21.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home ...

Tout au long de cette rubrique, nous faisons référence à l’exemple d’application layer-java sur le référentiel GitHub d’awsdocs. Cette application contient des scripts qui téléchargent les dépendances et génèrent la couche. L’application contient également une fonction correspondante qui utilise les dépendances de la couche. Après avoir créé une couche, vous pouvez déployer et invoquer la fonction correspondante pour vérifier que tout fonctionne correctement. Comme vous utilisez l’environnement d’exécution Java 21 pour les fonctions, les couches doivent également être compatibles avec Java 21.

L’exemple d’application layer-java contient un seul exemple dans deux sous-répertoires. Le répertoire layer contient un fichier pom.xml qui définit les dépendances des couches, ainsi que des scripts permettant de générer la couche. Le répertoire function contient un exemple de fonction permettant de vérifier le fonctionnement de la couche. Ce tutoriel explique comment créer et empaqueter cette couche.

Compatibilité de la couche Java avec Amazon Linux

La première étape de la création d'une couche consiste à regrouper l'ensemble du contenu de la couche dans une archive de fichiers .zip. Parce que les fonctions Lambda s'exécutent sur Amazon Linux, le contenu de votre couche doit pouvoir être compilé et construit dans un environnement Linux.

Le code Java est conçu pour être indépendant de la plateforme. Vous pouvez donc empaqueter vos couches sur votre machine locale même si celle-ci n’utilise pas d’environnement Linux. Une fois que vous aurez chargé la couche Java sur Lambda, elle sera toujours compatible avec Amazon Linux.

Chemins d’accès de couche des environnements d’exécution Java

Lorsque vous ajoutez une couche à une fonction, Lambda charge le contenu de la couche dans le répertoire /opt de cet environnement d’exécution. Pour chaque exécution Lambda, la variable PATH inclut déjà des chemins de dossiers spécifiques dans le répertoire /opt. Pour garantir que la variable PATH capture le contenu de votre couche, le fichier .zip de votre couche doit avoir ses dépendances dans les chemins de dossier suivants :

  • java/lib

Par exemple, le fichier de couche .zip obtenu que vous créez dans ce tutoriel possède la structure de répertoire suivante :

layer_content.zip └ java └ lib └ layer-java-layer-1.0-SNAPSHOT.jar

Le fichier JAR layer-java-layer-1.0-SNAPSHOT.jar (un uber-jar contenant toutes les dépendances requises) est correctement situé dans le répertoire java/lib. Cela garantit que Lambda peut localiser la bibliothèque lors des appels de fonctions.

Empaquetage du contenu de la couche

Dans cet exemple, vous regroupez les deux bibliothèques Java suivantes dans un seul fichier JAR :

  • aws-lambda-java-core : un ensemble minimal de définitions d’interface pour travailler avec Java dans AWS Lambda

  • Jackson : une suite populaire d’outils de traitement de données, en particulier pour travailler avec JSON.

Pour installer et empaqueter le contenu de la couche, complétez les étapes suivantes.

Pour installer et empaqueter le contenu de votre couche
  1. Clonez le référentiel GitHub aws-lambda-developer-guide, qui contient l’exemple de code dont vous avez besoin, dans le répertoire sample-apps/layer-java.

    git clone https://github.com/awsdocs/aws-lambda-developer-guide.git
  2. Accédez au répertoire layer de l’exemple d’application layer-java. Ce répertoire contient les scripts que vous utilisez pour créer et empaqueter correctement la couche.

    cd aws-lambda-developer-guide/sample-apps/layer-java/layer
  3. Examinez les fichiers pom.xml. Dans la section <dependencies>, vous définissez les dépendances que vous souhaitez inclure dans la couche, à savoir les bibliothèques aws-lambda-java-core et jackson-databind. Vous pouvez mettre à jour ce fichier pour inclure les dépendances que vous souhaitez inclure dans votre propre couche.

    Exemple pom.xml
    <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-lambda-java-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.0</version> </dependency> </dependencies>
    Note

    La section <build> de ce fichier pom.xml contient deux plug-ins. Le maven-compiler-plugin compile le code source. Le maven-shade-plugin regroupe vos artefacts dans un seul uber-jar.

  4. Vérifiez que vous êtes autorisé à exécuter les deux scripts.

    chmod 744 1-install.sh && chmod 744 2-package.sh
  5. Exécutez le script 1-install.sh à l’aide de la commande suivante :

    ./1-install.sh

    Ce script exécute mvn clean install dans le répertoire actuel. Cela crée l’uber-jar avec toutes les dépendances requises dans le répertoire target/.

    Exemple 1-install.sh
    mvn clean install
  6. Exécutez le script 2-package.sh à l’aide de la commande suivante :

    ./2-package.sh

    Ce script crée la structure de répertoire java/lib dont vous avez besoin pour empaqueter correctement le contenu de votre couche. Il copie ensuite le fichier uber-jar du répertoire /target dans le répertoire nouvellement créé java/lib. Enfin, le script compresse le contenu du répertoire java dans un fichier nommé layer_content.zip. Il s’agit du fichier .zip pour votre couche. Vous pouvez décompresser le fichier et vérifier qu’il contient la bonne structure de fichier, comme indiqué dans la section Chemins d’accès de couche des environnements d’exécution Java.

    Exemple 2-package.sh
    mkdir java mkdir java/lib cp -r target/layer-java-layer-1.0-SNAPSHOT.jar java/lib/ zip -r layer_content.zip java

Création de la couche

Dans cette section, vous allez prendre le fichier layer_content.zip que vous avez généré dans la section précédente et le charger en tant que couche Lambda. Vous pouvez charger une couche à l’aide de l’AWS Management Console ou de l’API Lambda via l’AWS Command Line Interface (AWS CLI). Lorsque vous chargez le fichier .zip de votre couche, dans la commande PublishLayerVersion de l’AWS CLI suivante, spécifiez java21 en tant qu’environnement d’exécution compatible et arm64 en tant qu’architecture compatible.

aws lambda publish-layer-version --layer-name java-jackson-layer \ --zip-file fileb://layer_content.zip \ --compatible-runtimes java21 \ --compatible-architectures "arm64"

Dans la réponse, notez le LayerVersionArn, qui ressemble à arn:aws:lambda:us-east-1:123456789012:layer:java-jackson-layer:1. Vous aurez besoin de cet Amazon Resource Name (ARN) à l’étape suivante de ce tutoriel, lorsque vous ajouterez la couche à votre fonction.

Ajout de la couche à votre fonction

Dans cette section, vous déployez un exemple de fonction Lambda qui utilise la bibliothèque Jackson dans son code de fonction, puis vous attachez la couche. Pour déployer la fonction, vous avez besoin d’un Définition des autorisations de fonction Lambda avec un rôle d’exécution. Si vous ne disposez pas d’un rôle d’exécution existant, suivez les étapes de la section réductible.

Pour créer un rôle d’exécution
  1. Ouvrez la page Roles (Rôles) dans la console IAM.

  2. Sélectionnez Créer un rôle.

  3. Créez un rôle avec les propriétés suivantes :

    • Entité de confianceLambda.

    • AutorisationsAWSLambdaBasicExecutionRole.

    • Nom de rôlelambda-role.

    La stratégie AWSLambdaBasicExecutionRole possède les autorisations dont la fonction a besoin pour écrire des journaux dans CloudWatch Logs.

Pour créer un rôle d’exécution
  1. Ouvrez la page Roles (Rôles) dans la console IAM.

  2. Sélectionnez Créer un rôle.

  3. Créez un rôle avec les propriétés suivantes :

    • Entité de confianceLambda.

    • AutorisationsAWSLambdaBasicExecutionRole.

    • Nom de rôlelambda-role.

    La stratégie AWSLambdaBasicExecutionRole possède les autorisations dont la fonction a besoin pour écrire des journaux dans CloudWatch Logs.

Le code de la fonction Lambda prend Map<String, String> comme entrée et utilise Jackson pour écrire l’entrée sous forme de chaîne JSON avant de la convertir en un objet Java F1Car prédéfini. Enfin, la fonction utilise les champs de l’objet F1Car pour construire une chaîne qu’elle renvoie.

package example; import com.amazonaws.services.lambda.runtime.Context; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.Map; public class Handler { public String handleRequest(Map<String, String> input, Context context) throws IOException { // Parse the input JSON ObjectMapper objectMapper = new ObjectMapper(); F1Car f1Car = objectMapper.readValue(objectMapper.writeValueAsString(input), F1Car.class); StringBuilder finalString = new StringBuilder(); finalString.append(f1Car.getDriver()); finalString.append(" is a driver for team "); finalString.append(f1Car.getTeam()); return finalString.toString(); } }
Pour déployer la fonction Lambda
  1. Accédez au répertoire function/. Si vous êtes actuellement dans le répertoire layer/, exécutez la commande suivante :

    cd ../function
  2. Créez le projet à l’aide de la commande Maven suivante :

    mvn package

    Cette commande génère un fichier JAR dans le répertoire target/ nommé layer-java-function-1.0-SNAPSHOT.jar.

  3. Déployez la fonction. Dans la commande AWS CLI suivante, remplacez le paramètre --role par l’ARN de votre rôle d’exécution :

    aws lambda create-function --function-name java_function_with_layer \ --runtime java21 \ --architectures "arm64" \ --handler example.Handler::handleRequest \ --timeout 30 \ --role arn:aws:iam::123456789012:role/lambda-role \ --zip-file fileb://target/layer-java-function-1.0-SNAPSHOT.jar
  4. Attachez ensuite la couche à votre fonction. Dans la commande AWS CLI suivante, remplacez le paramètre --layers par l’ARN de la version de couche que vous avez indiqué précédemment :

    aws lambda update-function-configuration --function-name java_function_with_layer \ --cli-binary-format raw-in-base64-out \ --layers "arn:aws:lambda:us-east-1:123456789012:layer:java-jackson-layer:1"
  5. Enfin, essayez d’invoquer votre fonction à l’aide de la commande AWS CLI suivante :

    aws lambda invoke --function-name java_function_with_layer \ --cli-binary-format raw-in-base64-out \ --payload '{ "driver": "Max Verstappen", "team": "Red Bull" }' response.json

    Vous devriez obtenir un résultat du type suivant :

    { "StatusCode": 200, "ExecutedVersion": "$LATEST" }

    Cela indique que la fonction a pu utiliser la dépendance de Jackson pour exécuter correctement la fonction. Vous pouvez vérifier que le fichier de sortie response.json contient la bonne chaîne renvoyée :

    "Max Verstappen is a driver for team Red Bull"

Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. En supprimant des ressources AWS que vous n'utilisez plus, vous évitez les frais superflus pour votre Compte AWS.

Pour supprimer la couche Lambda
  1. Ouvrez la page Couches de la console Lambda.

  2. Sélectionnez la couche que vous avez créée.

  3. Choisissez Supprimer, puis de nouveau Supprimer.

Pour supprimer la fonction Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction que vous avez créée.

  3. Sélectionnez Actions, Supprimer.

  4. Saisissez delete dans la zone de saisie de texte et choisissez Delete (Supprimer).

Vous pouvez maintenant supprimer les ressources que vous avez créées pour ce didacticiel, sauf si vous souhaitez les conserver. En supprimant des ressources AWS que vous n'utilisez plus, vous évitez les frais superflus pour votre Compte AWS.

Pour supprimer la couche Lambda
  1. Ouvrez la page Couches de la console Lambda.

  2. Sélectionnez la couche que vous avez créée.

  3. Choisissez Supprimer, puis de nouveau Supprimer.

Pour supprimer la fonction Lambda
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Sélectionnez la fonction que vous avez créée.

  3. Sélectionnez Actions, Supprimer.

  4. Saisissez delete dans la zone de saisie de texte et choisissez Delete (Supprimer).

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.