Cómo cargar archivos de dependencia en AWS Lambda

Cómo cargar archivos de dependencia en AWS Lambda

Estoy intentando crear una función AWS Lambda basada en Python y necesito importar un módulo. Seguí las instrucciones enCrear un paquete de implementación (Python)en Amazon.

Cuando creo y subo el archivo ZIP, el ZIP incluye:

El contenido ZIP principal, siendo tester2 mi programa principal de Python.

En la carpeta usaddress, puse las dependencias de usaddress, aunque sólo supongo que ahí es donde pertenecen.

En cualquier caso, cuando subo el archivo a Lambda, devuelve un error:

{ 
"errorMessage": "Unable to import module 'Tester2'"
}
START RequestId: e9c2cafe-3705-11e6-a289-5366a5578765 Version: $LATEST
Unable to import module 'Tester2': No module named future.builtins
END RequestId: e9c2cafe-3705-11e6-a289-5366a5578765

El usaddress/pycrfsuite __init_archivo está importando el archivo usaddress/pycrfsuite/_pycrfsuite.pyd. _pycrfsuite está en el directorio correcto, pero no sé por qué se ignora.

¿Cómo hago para que esto funcione?

Respuesta1

Después de mucha investigación, me di cuenta de que los archivos .pyd (que es el tipo de archivo que se estaba ignorando) son archivos cython compilados y que se compilan de manera diferente en sistemas DOS y UNIX. Entonces abrí una instancia EC2, instalé usaddress, la biblioteca de dependencia y copié el archivo .so que compiló la instancia ec2.

Eso terminó funcionando, por lo que en realidad se trataba de un problema de archivos de sistema incompatibles.

información relacionada