Uso de capas para funciones de Lambda en Java
Utilice capas de Lambda para empaquetar el código y las dependencias que desee reutilizar en varias funciones. Las capas suelen contener dependencias de biblioteca, un tiempo de ejecución personalizado o archivos de configuración. La creación de una capa implica tres pasos generales:
-
Empaquete el contenido de su capa. Esto significa crear un archivo de archivo. zip que contenga las dependencias que desea usar en sus funciones.
-
Cree la capa en Lambda.
-
Agregue la capa a sus funciones.
Empaquete el contenido de su capa.
Para crear una capa, agrupe sus paquetes en un archivo .zip que cumpla con los siguientes requisitos:
-
Asegúrese de que la versión de Java a la que hace referencia Maven o Gradle sea la misma que la versión de Java de la función que se pretende implementar. Por ejemplo, para una función de Java 21, el comando
mvn -v
debería incluir Java 21 en el resultado: -
Las dependencias deben estar almacenadas en el directorio
java/lib
, en la raíz del archivo .zip. Para obtener más información, consulte Rutas de capa para cada tiempo de ejecución de Lambda. -
Los paquetes de la capa deben ser compatibles con Linux. Las funciones de Lambda se ejecutan en Amazon Linux.
-
Si en la capa se incluyen archivos binarios nativos o ejecutables, deben estar orientados a la misma arquitectura Configuración y selección de la arquitectura del conjunto de instrucciones para una función de Lambda (x86_64 o arm64) que la función.
Puede crear capas que contengan bibliotecas de Java de terceros o sus propios módulos y paquetes de Java. El siguiente procedimiento utiliza Maven. También puede usar Gradle para empaquetar el contenido de la capa.
Crear una capa mediante las dependencias de Maven
-
Cree un proyecto de Apache Maven con un archivo
pom.xml
que defina las dependencias.El siguiente ejemplo incluye Jackson Databind
para el procesamiento de JSON. La sección <build>
usa el complemento maven-dependency-pluginpara crear archivos JAR independientes para cada dependencia en lugar de agruparlos en un único uber-jar. Si quiere crear un uber-jar, use maven-shade-plugin . ejemplo 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>
-
Compilar el proyecto. Este comando crea todos los archivos JAR de dependencia en el directorio
target/lib/
.mvn clean package
-
Cree la estructura del directorio necesario para su capa:
mkdir -p java/lib
-
Copie los archivos JAR de dependencia en el directorio
java/lib
:cp target/lib/*.jar java/lib/
-
Comprima en formato zip el contenido de la capa:
La estructura de directorios del archivo .zip debería ser similar a la siguiente:
java/ └── lib/ ├── jackson-databind-2.17.0.jar ├── jackson-core-2.17.0.jar └── jackson-annotations-2.17.0.jar
nota
Asegúrese de que su archivo .zip incluya el directorio
java
en el nivel raíz conlib
en su interior. Esta estructura garantiza que Lambda pueda localizar e importar sus bibliotecas. Cada dependencia se mantiene como un archivo JAR independiente en lugar de estar agrupadas en un uber-jar.
Creación de la capa en Lambda
También puede publicar la capa con la AWS CLI o la consola de Lambda.