Administración de las dependencias de Lambda con capas
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.
Hay varias razones por las que podría considerar la posibilidad de usar las capas:
-
Para reducir el tamaño de sus paquetes de implementación. En lugar de incluir todas las dependencias de la función junto con el código de la función en el paquete de implementación, colóquelas en una capa. Esto mantiene los paquetes de implementación pequeños y organizados.
-
Para separar la lógica de las funciones principales de las dependencias. Con las capas, puede actualizar las dependencias de las funciones independientemente del código de la función y viceversa. Esto promueve la separación de preocupaciones y lo ayuda a concentrarse en la lógica de su función.
-
Para compartir dependencias entre varias funciones. Después de crear una capa, puede aplicarla a cualquier número de funciones de su cuenta. Sin capas, debe incluir las mismas dependencias en cada paquete de implementación individual.
-
Para usar el editor de código de la consola de Lambda. El editor de código es una herramienta útil para probar rápidamente actualizaciones de código de funciones menores. Sin embargo, no puede usar el editor si el tamaño del paquete de implementación es demasiado grande. El uso de capas reduce el tamaño del paquete y puede desbloquear el uso del editor de código.
Si trabaja con funciones de Lambda en Go o Rust, le recomendamos que no utilice capas. En el caso de las funciones en Go y Rust, debe proporcionar el código de la función como ejecutable, que incluye el código de la función compilado junto con todas sus dependencias. Al colocar las dependencias en una capa, la función tiene que cargar de forma manual los ensamblajes adicionales durante la fase de inicialización, lo que puede aumentar los tiempos de arranque en frío. Para obtener un rendimiento óptimo de las funciones en Go y Rust, debe incluir las dependencias junto con el paquete de implementación.
El siguiente diagrama ilustra las diferencias arquitectónicas de alto nivel entre dos funciones que comparten dependencias. Una usa capas Lambda y la otra no.
Cuando incluye una capa en una función, Lambda extrae los contenidos de la capa en el directorio /opt
en el entorno de ejecución de la función. Todos los tiempos de ejecución de Lambda compatibles de forma nativa incluyen rutas a directorios específicos dentro del directorio /opt
. Esto permite que la función acceda al contenido de la capa. Para obtener más información sobre estas rutas específicas y sobre cómo empaquetar correctamente las capas, consulte Empaquetado del contenido de la capa.
Puede incluir hasta cinco capas por función. Además, puede utilizar capas solo con funciones de Lambda implementadas como archivos .zip. Para una función definida como una imagen de contenedor, empaquete su tiempo de ejecución preferido y todas las dependencias de código al crear la imagen de contenedor. Para obtener más información, consulte Cómo trabajar con capas y extensiones de Lambda
Temas
Cómo usar las capas
Para crear una capa, empaquete sus dependencias en un archivo .zip, de forma similar a como crear un paquete de implementación normal. Más específicamente, el proceso general de creación y uso de capas incluye estos tres pasos:
-
Primero, empaquete el contenido de la capa. Esto significa crear un archivo .zip. Para obtener más información, consulte Empaquetado del contenido de la capa.
-
A continuación, cree la capa en Lambda. Para obtener más información, consulte Creación y eliminación de capas en Lambda.
-
Agregue la capa a las funciones. Para obtener más información, consulte Adición de capas a las funciones.
Capas y versiones de capas
Una versión de capa es una instantánea inmutable de una versión específica de una capa. Al crear una capa nueva, Lambda crea una nueva versión de capa con el número de versión 1. Cada vez que publique una actualización de la capa, Lambda incrementa el número de versión y crea una nueva versión de capa.
Cada versión de capa se identifica mediante un Nombre de recurso de Amazon (ARN) único. Al agregar una capa a la función, debe especificar la versión de capa exacta que desea utilizar.