AWS SAM zip contiene todas las dependencias para cada función Lambda.
Estoy trabajando en una aplicación sin servidor que tiene 10 funciones Lambda.
Despliego los cambios de código usando sam build & sam package & sam deploy
SAM crea un archivo ZIP del código y todas las dependencias y lo sube a S3. Este ZIP se descarga cada vez que se invoca una función Lambda.
Esto crea 2 problemas.
1) El tiempo de compilación aumenta
La ejecución de sam deploy
imprime File with same data already exists at
(número de función Lambda – 1) veces porque carga el mismo paquete ZIP para todas las funciones Lambda. Dado que todas las funciones Lambda están en el mismo repositorio, el paquete ZIP es el mismo para todas ellas. Por alguna razón, SAM no lo entiende. ¿Se espera que creemos un nuevo repositorio de código para cada función Lambda?
2) El tamaño del archivo ZIP aumenta
Como dije anteriormente, el ZIP se descarga cada vez que (si es un inicio en frío) se invoca la función Lambda. Esto aumenta la latencia. También hay un límite de 50MB para el paquete ZIP.
Las Capas de Lambda parecen ser una solución potencial, pero parece que la configuración no es muy fácil.
¿Existe una forma de crear archivos ZIP específicos de la función Lambda utilizando SAM? En mi caso, habría 10 archivos ZIP para cada función Lambda y cada Lambda descargaría el ZIP correspondiente cuando se invoque.
¿Es posible hacer que SAM haga una compilación para cada Lambda e incluya solo las dependencias que se usan en cada una en lugar de empaquetar todas las dependencias juntas?
davy.ai
Solución para una aplicación sin servidores con 10 funciones Lambda
Al implementar una aplicación sin servidores con 10 funciones Lambda, usando
sam build & sam package & sam deploy
se crea un solo archivo ZIP con el código y todas las dependencias. Esto puede aumentar el tiempo de construcción y el tamaño del archivo ZIP, lo que puede causar problemas de latencia durante los arranques en frío.Una solución potencial es utilizar Lambda Layers, lo que permitiría separar el código y las dependencias en capas compartidas por múltiples funciones. Sin embargo, esta configuración puede ser compleja.
Otra solución es crear archivos ZIP específicos para cada función Lambda utilizando SAM. Esto implica crear un paquete de implementación separado para cada función Lambda e incluir solamente las dependencias que ésta realmente utiliza. Esto se puede lograr mediante una combinación de
sam build
ysam package
con los argumentos apropiados.Al crear paquetes de implementación separados, se puede asegurar que cada función Lambda sólo descargue las dependencias que necesita, reduciendo el tamaño del archivo ZIP y mejorando la latencia durante los arranques en frío.