NumPy y Pandas con AWS Lambda

[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]

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?

[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]


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!

[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]

Diego Pacheco

Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]

Recent Post

[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]