library aws python amazon-web-services pip aws-lambda alexa-skills-kit

python - library - virtualenv lambda aws



¿Cómo agrego bibliotecas de Python a una función lambda de AWS para Alexa? (4)

Es posible que desee considerar el uso de marcos como zappa que se encargarán de empaquetar y desplegar la función lambda para usted.

Puedes usar eso junto con flask-ask para que sea más fácil crear habilidades de Alexa. Incluso hay un video tutorial de esto (del archivo léame de zappa) here

Estaba siguiendo el tutorial para crear una aplicación de Alexa usando Python:

Tutorial Python Alexa

Pude seguir con éxito todos los pasos y hacer que la aplicación funcione. Ahora quiero modificar el código de Python y usar bibliotecas externas como import requests o cualquier otra biblioteca que instale usando pip. ¿Cómo configuraría mi función lambda para incluir cualquier paquete pip que instale localmente en mi máquina?


Haciendo eco de la respuesta de @ d3ming, un marco es una buena manera de llegar a este punto. Crear el paquete de implementación manualmente no es imposible, pero tendrá que cargar el código compilado de sus paquetes, y si está compilando ese código en un sistema que no sea Linux, la posibilidad de encontrar problemas con las diferencias entre su sistema y el entorno desplegado de la función Lambda es alto.

A continuación, puede solucionarlo compilando su código en una máquina Linux o en un contenedor Docker ... pero entre toda esa complejidad puede obtener mucho más de la adopción de un marco.

Serverless está bien adoptado y tiene soporte para paquetes personalizados de Python. Incluso se integra con Docker para compilar sus dependencias de Python y construir el paquete de implementación para usted.

Si estás buscando un tutorial completo sobre esto, escribí uno para las funciones de Python Lambda aquí.


La here es bastante buena. En pocas palabras, debe crear un archivo zip de un directorio que contenga tanto el código de su función lambda como todas las bibliotecas externas que utilice en el nivel superior.

Puede simular eso desactivando su virtualenv, copiando todas sus bibliotecas requeridas en el directorio de trabajo (que siempre está en sys.path si invoca un script en la línea de comandos), y verificando si su script aún funciona.


Tal como se describe en el enlace de la documentación oficial de Amazon here Es tan simple como crear un archivo zip de todos los contenidos de la carpeta después de instalar los paquetes requeridos en su carpeta donde tiene su código lambda de Python.

Como Vineeth señaló anteriormente en su comentario, el primer paso para pasar de un editor de código en línea a un enfoque de carga de archivos zip es cambiar el nombre del controlador de la función lambda en los ajustes de configuración para incluir el nombre del archivo de script de Python que contiene el controlador lambda.

lambda_handler => {your-python-script-file-name} .lambda_handler .

Otras soluciones como python-lambda y lambda-uploader ayudan a simplificar el proceso de carga y las PRUEBAS LOCALES más importantes. Estos ahorrarán mucho tiempo en desarrollo.