So laden Sie Abhängigkeitsdateien in AWS Lambda hoch

So laden Sie Abhängigkeitsdateien in AWS Lambda hoch

Ich versuche, eine Python-basierte AWS-Lambda-Funktion zu erstellen und muss ein Modul importieren. Ich habe die Anweisungen in befolgtErstellen eines Bereitstellungspakets (Python)auf Amazon.

Wenn ich die ZIP-Datei erstelle und hochlade, enthält die ZIP-Datei:

Der Hauptinhalt der ZIP-Datei, wobei tester2 mein Haupt-Python-Programm ist

Ich habe die usaddress-Abhängigkeiten in den usaddress-Ordner gelegt, obwohl ich nur vermute, dass sie dorthin gehören.

Wenn ich die Datei auf Lambda hochlade, wird auf jeden Fall ein Fehler zurückgegeben:

{ 
"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

Die Datei usaddress/pycrfsuite/_pycrfsuite.pyd wird von der usaddress/pycrfsuite __init_Datei importiert. Die _pycrfsuite befindet sich im richtigen Verzeichnis, aber ich weiß nicht, warum sie ignoriert wird.

Wie bekomme ich das zum Laufen?

Antwort1

Nach langer Recherche wurde mir klar, dass .pyd-Dateien (das ist der Dateityp der ignorierten Datei) kompilierte Cython-Dateien sind und dass sie auf DOS- und UNIX-Systemen unterschiedlich kompiliert werden. Also öffnete ich eine EC2-Instanz, installierte usaddress, die Abhängigkeitsbibliothek, und kopierte die .so-Datei, die die EC2-Instanz kompiliert hatte.

Das hat letztendlich funktioniert, es handelte sich also wirklich um ein Problem inkompatibler Systemdateien.

verwandte Informationen