Empaquetado del contenido de la capa - AWS Lambda

Empaquetado del contenido de la capa

Una capa de Lambda es un archivo .zip que contiene código o datos adicionales. Las capas suelen contener dependencias de biblioteca, un tiempo de ejecución personalizado o archivos de configuración.

En esta sección se explica cómo empaquetar correctamente el contenido de la capa. Para obtener más información conceptual sobre las capas y los motivos por los que podría considerar la posibilidad de utilizarlas, consulte Administración de las dependencias de Lambda con capas.

El primer paso para crear una capa consiste en agrupar todo el contenido de la capa en un archivo .zip. Dado que las funciones de Lambda se ejecutan en Amazon Linux, el contenido de la capa debe poder compilarse y crearse en un entorno de Linux.

Para garantizar que el contenido de la capa funcione correctamente en un entorno de Linux, se recomienda crear el contenido de la capa con una herramienta como Docker o AWS Cloud9. AWS Cloud9 es un entorno de desarrollo integrado (IDE) basado en la nube que proporciona acceso integrado a un servidor Linux para ejecutar y probar código. Para obtener más información, consulte Using Lambda layers to simplify your development process en AWS Compute Blog.

Rutas de capa para cada tiempo de ejecución de Lambda

Cuando agrega una capa a una función, Lambda carga el contenido de la capa en el directorio /opt de ese entorno de ejecución. Para cada tiempo de ejecución de Lambda, la variable PATH ya incluye rutas de carpeta específicas en el directorio /opt. Para garantizar que la variable PATH recoja el contenido de la capa, el archivo.zip de la capa, debe tener sus dependencias en las siguientes rutas de carpeta:

Rutas de capa para cada tiempo de ejecución de Lambda
Tiempo de ejecución Ruta

Node.js

nodejs/node_modules

nodejs/node14/node_modules (NODE_PATH)

nodejs/node16/node_modules (NODE_PATH)

nodejs/node18/node_modules (NODE_PATH)

Python

python

python/lib/python3.x/site-packages (directorios del sitio)

Java

java/lib (CLASSPATH)

Ruby

ruby/gems/3.2.0 (GEM_PATH)

ruby/lib (RUBYLIB)

Todos los tiempos de ejecución

bin (PATH)

lib (LD_LIBRARY_PATH)

En los siguientes ejemplos se muestra cómo puede estructurar las carpetas en el archivo .zip de su capa.

Node.js
ejemplo estructura de archivos para el SDK de AWS X-Ray para Node.js
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk
Python
ejemplo estructura de archivos para la biblioteca de solicitudes
layer_content.zip └ python └ lib └ python3.11 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...
Ruby
ejemplo estructura de archivos para la gema de JSON
json.zip └ ruby/gems/2.7.0/ | build_info | cache | doc | extensions | gems | └ json-2.1.0 └ specifications └ json-2.1.0.gemspec
Java
ejemplo estructura de archivos para el archivo JAR de Jackson
layer_content.zip └ java └ lib └ jackson-core-2.17.0.jar └ <other potential dependencies> └ ...
All
ejemplo estructura de archivos para la biblioteca jq
jq.zip └ bin/jq

Para obtener instrucciones específicas del idioma sobre cómo empaquetar, crear y agregar una capa, consulte las siguientes páginas: