¿Cómo instalar paquetes de Python para capas de AWS Lambda?

AWS Lambda Layer es un archivo zip que contiene el código adicional necesario (bibliotecas, dependencias o tiempos de ejecución personalizados) o datos para ejecutar su función de AWS Lambda. La función AWS Lambda puede luego extraer este contenido requerido en forma de capas lambda. Cuando se invoca una función de AWS Lambda, la capa con todas las dependencias se carga junto con ella durante el tiempo de ejecución.

¿Por qué necesitamos capas lambda?

La función AWS Lambda admite solo algunas bibliotecas estándar durante su tiempo de ejecución. Por lo tanto, se vuelve problemático cuando tiene que usar bibliotecas externas (por ejemplo, pandas) con su función lambda. En tales casos, podemos hacer uso de capas lambda o un paquete de implementación. Pero usar una capa lambda en comparación con un paquete de implementación es bastante útil.  

Ventajas de usar capas lambda

El uso de AWS Lambda Layers tiene los siguientes beneficios:

  • Reutilización: una capa lambda se puede utilizar en muchas funciones diferentes de AWS Lambda.
  • Uso compartido de código: las capas lambda nos permiten compartir el código o las funciones comunes, las bibliotecas y las dependencias entre varias funciones lambda.
  • El uso de capas Lambda lo ayuda a concentrarse en su código principal o lógica comercial. Además, ayuda a mantener el código de la función de Lambda más pequeño.
  • El uso de capas Lambda ayuda a reducir el tamaño del paquete de implementación.
  • Si es necesario actualizar su código común o cualquier dependencia, puede hacerlo en un solo lugar en lugar de realizar cambios en las funciones lambda individuales.
  • Dado que las capas lambda brindan una función para almacenar diferentes versiones, puede usar la versión anterior de un paquete o una versión nueva según los requisitos.

Nota: una función lambda puede tener hasta 5 capas. En este tutorial, veremos cómo instalar paquetes de python para AWS Lambda Layers. Tenga en cuenta que independientemente del paquete de python que desee usar con sus funciones lambda, los pasos a continuación serán los mismos.

Pasos para agregar paquetes de python en capas de AWS lambda

Paso 1: Vaya a la consola de administración de AWS.

Paso 2: Haga clic en crear función.

 Click-on-create-function

Paso 3: Cree una función lambda llamada «mylambda»

Paso 4: elija la arquitectura Python 3.9 y x86_64 y haga clic en crear una función

Choose-Python-3.9-and-x86_64-architecture

Paso 5: ahora intente importar el módulo de requests en su función lambda. Por lo tanto, cree un evento llamado «myevent» haciendo clic en la flecha hacia abajo en el botón de prueba.

Select-configure-test-event Create-an-event-named-myevent

Paso 6: implementar la función.

 Deploy-the-function

Ahora haga clic en prueba. Tan pronto como haga clic en la prueba, verá un mensaje de error.

GEtting-error-message

Para crear una capa lambda, necesitamos crear un archivo zip que contenga todas las dependencias para el paquete de ‘requests’ y subirlo a nuestra capa. Para crear este archivo zip haremos uso de docker.

¿Por qué Docker?

Dado que lambda usa el entorno de Amazon Linux, si está usando Windows y crea un archivo zip de dependencias, es posible que no funcione mientras ejecuta su función lambda. Después de terminar de configurar la ventana acoplable , abra el símbolo del sistema y ejecute:

ventana acoplable ejecuta -it ubuntu 

La bandera «-it» se usa para abrir un shell interactivo. 

Nota: si obtiene un error después de ejecutar el comando anterior, verifique si tiene una imagen de ubuntu. Para verificar las imágenes de la ventana acoplable, use el comando:

Imágenes de docker

Ahora ejecute los siguientes comandos para actualizar, instale la versión de Python requerida e instale pip.

actualización adecuada

Update-ubuntu

 apt instalar python3.9  

apt instalar python3-pip

Como también tenemos que hacer un archivo zip después, instale zip.

apt instalar zip

Crea un directorio donde queremos instalar nuestro paquete de requests.

mkdir -p capa/python/lib/python3.9/site-packages

Create-a-directory

Esto creará una carpeta llamada: «capa». Finalmente, instale el paquete de requests usando el comando:

Requests de instalación de pip3 -t layer/python/lib/python3.9/site-packages/

Installing-the-request-package

Ahora ve a la carpeta «capa»  

cd layer  

Si hace ‘ls’, verá una carpeta llamada python aquí.

Ahora cree la carpeta zip del paquete instalado en el directorio de capas.

zip -r mypackage.zip *

Create-a-zip-folder

Ahora tenemos que copiar el archivo zip mypackage.zip a nuestra carpeta local.

Copy-the-zip-file

Para hacer eso, abra un nuevo símbolo del sistema y obtenga la ID del contenedor ejecutando: 

docker ps -a

Open-new-command-prompt

Ahora use el siguiente comando para copiar el archivo zip de su contenedor a una carpeta local.

Formato

docker cp <Container-ID:path_of_zip_file>   <path_where_you_want_to_copy>

Ejemplo :

docker cp 7cdd497f0560:/layer/mypackage.zip C:\Users\lenovo\Desktop\layer

Example

Ahora tendrá un archivo ‘mypackage.zip’ en la ruta que describió. 

Get-mypackage.zip-file

Ahora vamos a crear una capa lambda. En el lado izquierdo de la consola, haga clic en capas

Create-a-lambda-layer

Haga clic en el botón Crear una capa.

Click-on-create-a-layer-button

Nombra tu capa como «mylayer». Tenga en cuenta que tiene la opción de cargar un archivo zip o cargar un archivo desde amazon s3. Si los archivos son más grandes, cárguelos en s3 y proporcione el enlace al archivo zip.

Click-on-Upload-a-file-from-Amazon-S3

En este tutorial, lo cargaremos directamente como un archivo zip. Elija una arquitectura compatible como: x86_64. Dado que seleccionamos lo mismo al crear nuestra función lambda. Y elija un tiempo de ejecución compatible como python3.9, cargue el archivo zip y haga clic en crear. 

Click-on-create

Se creará correctamente una capa lambda. Ahora solo necesitamos adjuntar esto con nuestra función lambda. Si está creando la capa por primera vez, su número de versión se reflejará como 1. (El valor de la versión de la capa Lambda es inmutable, es decir, el número de versión se incrementa en 1 cada vez que crea una nueva capa).

Vuelva a la función lambda. Desplácese hacia abajo y haga clic en agregar una capa (en la sección Capas).

 Click-on-add-a-layer

Haga clic en la capa personalizada y seleccione ‘mylayer’, seleccione la versión y haga clic en agregar.

Click-on-add-button

¡Ahora es el momento de probarlo! Haga clic en prueba.

Click-on-test-button

¡Su función lambda ahora se ejecutará con éxito!

Algunos puntos importantes:

  • Los archivos descomprimidos de la capa lambda estarán presentes en el directorio /opt en el tiempo de ejecución de Lambda.
  • También puede usar el entorno AWS Cloud9 para crear el archivo zip en lugar de la ventana acoplable.

Publicación traducida automáticamente

Artículo escrito por tanishkaashi567 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *