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.
Utilisation de couches pour les fonctions Lambda Java
Utilisez les couches Lambda pour empaqueter le code et les dépendances que vous souhaitez réutiliser dans plusieurs fonctions. 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 :
-
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.
-
Créez la couche dans Lambda.
-
Ajoutez la couche à vos fonctions.
Rubriques
Empaqueter le contenu de votre couche
Pour créer une couche, regroupez vos packages dans une archive de fichier .zip répondant aux exigences suivantes :
-
Assurez-vous que la version Java à laquelle Maven ou Gradle 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
mvn -v
commande doit répertorier Java 21 dans la sortie. -
Vos dépendances doivent être stockées dans le
java/lib
répertoire, à la racine du fichier .zip. Pour de plus amples informations, veuillez consulter Chemins d’accès de couche pour chaque exécution Lambda. -
Les packages de votre couche doivent être compatibles avec Linux. Les fonctions Lambda s'exécutent sur Amazon Linux.
-
Si votre couche inclut des fichiers binaires ou exécutables natifs, ils doivent cibler la même architecture (x86_64 ou arm64) que votre fonction.
Vous pouvez créer des couches contenant des bibliothèques Java tierces ou vos propres modules et packages Java. La procédure suivante utilise Maven. Vous pouvez également utiliser Gradle pour empaqueter le contenu de votre couche.
Pour créer une couche à l'aide des dépendances Maven
-
Créez un projet Apache Maven avec un
pom.xml
fichier qui définit vos dépendances.L'exemple suivant inclut Jackson Databind
pour le traitement JSON. La <build>
section utilise le maven-dependency-pluginpour créer des fichiers JAR distincts pour chaque dépendance au lieu de les regrouper dans un seul uber-jar. Si vous souhaitez créer un uber-jar, utilisez le. maven-shade-plugin Exemple pom.xml
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>21</source> <target>21</target> <release>21</release> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
-
Générez le projet. Cette commande crée tous les fichiers JAR de dépendance dans le
target/lib/
répertoire.mvn clean package
-
Créez la structure de répertoire requise pour votre couche :
mkdir -p java/lib
-
Copiez les fichiers JAR de dépendance
java/lib
dans le répertoire :cp target/lib/*.jar java/lib/
-
Compressez le contenu de la couche :
La structure de répertoire de votre fichier .zip doit ressembler à ceci :
java/ └── lib/ ├── jackson-databind-2.17.0.jar ├── jackson-core-2.17.0.jar └── jackson-annotations-2.17.0.jar
Note
Assurez-vous que votre fichier .zip inclut le
java
répertoire aulib
niveau racine. Cette structure permet à Lambda de localiser et d'importer vos bibliothèques. Chaque dépendance est conservée dans un fichier JAR distinct plutôt que regroupée dans un uber-jar.
Création de la couche dans Lambda
Vous pouvez publier votre couche à l'aide de la console Lambda AWS CLI ou de la console Lambda.