NumPy y Pandas con AWS Lambda

numpy

AWS Lambda con Pandas y NumPy

AWS Lambda no incluye las bibliotecas Pandas/NumPy Python de forma predeterminada. ¿Cómo usar Pandas y NumPy con funciones Lambda?


Planteamiento del problema

No hay pandas predeterminados en AWS Lambda. Puede ver el entorno de ejecución de AWS Lambda y las bibliotecas disponibles aquí. Verifiquemos y creemos la función AWS Lambda Python 3.6 con el siguiente código:

Respuesta de Lambda:

Unable to import module 'lambda_function': No module named 'pandas'

Cree un nuevo directorio local con el archivo lambda_function.py. Instale Pandas en el directorio local con pip:

$ pip install -t . pandas

Elimina *.dist-info__pycache__. Prepare el archivo zip.zip con el archivo lambda_function.py y Pandas:

$ rm -r *.dist-info __pycache__
$ zip -r zip.zip .

NumPy

Archivo zip.zip con el archivo lambda_function.py y Pandas

Cree una nueva función lambda (por ejemplo, medium). Vaya a la sección Function code y seleccione Upload a .zip file en el menú desplegable Code entry type. Haga clic en el botón Cargar. Cargue el archivo zip.zip. Finalmente haga clic en el botón Save:

NumPy

Cargar paquete de funciones

Verifiquemos la nueva respuesta de la función Lambda:

Unable to import module 'lambda_function': Missing required dependencies ['numpy']

¿Qué? Como puede ver a continuación, el archivo zip.zip incluye NumPy.

NumPy

Archivo zip.zip con el archivo lambda_function.py, Pandas y Numpy

El método estándar no funciona. AWS Lambda necesita Pandas/NumPy especiales. Arreglemoslo.

Nota: No olvide limpiar primero su entorno de trabajo. Elimina los directorios pandasnumpy y *.dist-info:

$ rm -r pandas numpy *.dist-info

Solución

AWS Lambda utiliza el sistema operativo Amazon Linux. La idea es descargar Pandas y NumPy compatibles con Amazon Linux.

Pandas. Vaya a https://pypi.org/project/pandas/#files. Busque y descargue el paquete *manylinux1_x86_64.whl más reciente. En mi caso, para Python 3.6 es el archivo pandas-0.24.1-cp36-cp36m-manylinux1_x86_64.whl.

NúmPy. Haz lo mismo con NumPy. El archivo es numpy-1.16.1-cp36-cp36m-manylinux1_x86_64.whl.

Descargue los archivos whl al directorio con lambda_function.py. Descomprimir archivos whl.

$ unzip numpy-1.16.1-cp36-cp36m-manylinux1_x86_64.whl
$ unzip pandas-0.24.1-cp36-cp36m-manylinux1_x86_64.whl

Nota: Lambda con Python 3.7 requiere pytz lib: $ pip install -t . pytz

Elimine los archivos whl, *.dist-info__pycache__. Prepare un nuevo archivo zip.zip:

$ rm -r *.whl *.dist-info __pycache__
$ zip -r zip.zip .

NumPy

Archivo zip.zip para Amazon Linux con el archivo lambda_function.py, Pandas y Numpy

Navegue hasta la función lambda (por ejemplo, medio). Vaya a la sección Function code y seleccione Upload a .zip file en el menú desplegable Code entry type. Haga clic en el botón Upload. Cargue el archivo zip.zip. Finalmente haga clic en el botón Save:

NumPy

Cargar paquete de funciones

Verifiquemos la nueva respuesta de la función Lambda:

Execution result: succeeded

¡Felicitaciones!

Recent Post