2016-06-23 8 views
6

Ich versuche eine AWS-Lambda-Funktion zu erstellen, um eine Miniaturansicht meiner hochgeladenen Bilder zu erstellen. Mein Skript gut lokal ausgeführt wird, gefolgt ich diese tutorial meine Funktion zu implementieren, aber ich habe ein Problem mit der Kissen-Bibliothek, in der Tat, wenn ich meine Funktion teste ich dieses folgende Protokoll sehen:AWS Lambda: Wie benutze ich die Kissenbibliothek?

enter image description here

Ich habe diese post mit dem gleichen Problem gefunden, aber in meinem Fall kann ich die Befehlszeile auf der Maschine nicht ausführen.

+0

Lösung: schau hier https://github.com/Miserlou/lambda-packages/tree/master/lambda_packages - sie haben vorkompilierte PIL-Pakete – AddingColor

Antwort

5

Sie müssen die libjpeg.so in Ihrem Lambda-Paket enthalten, aber es erfordert auch einige Feinabstimmungen mit dem patchelf Dienstprogramm. Unter der Annahme, dass Sie das Lambda-Paket vorbereiten über "pip installModulnamen-t" (statt über virtualenv), gehen Sie wie folgt vor:

cd into/your/local/lambda/package/dir 
cp -L $(ldd PIL/_imaging.so|grep libjpeg|awk '{print $3}') PIL/ 
patchelf --set-rpath PIL PIL/_imaging.so 
# zip, deploy and test the package 

Dieses Skript arbeitet für Pillow Version 3.2.0.

Betreffend patchelf: unter Ubuntu kann es 'apt install' ed sein, aber unter anderen Linuxes muss es möglicherweise built from source sein.

+0

Es ist seltsam, aber es funktioniert nur, wenn ich die folgende Zeile '' 'hinzufügen sys.path.append ("./PIL") '' ' –