2017-06-18 3 views
0

Ich habe eine Python 3.6-Lambda-Funktion in AWS. Ich habe alle Bibliotheken aus meiner requirements.txt-Datei verpackt und bereitgestellt. Wenn meine Funktion löst, bekomme ich diesen Fehler:Kann das Pyrebase-Modul nicht in AWS Lambda laden

module initialization error: Cannot load native module 'Crypto.Hash._SHA256' 

Der einzige Hinweis, den ich finden kann diese closed ticket im Paket Bibliothek ist. Aber was verursacht dieses Problem? Wie repariere ich es?

Antwort

0

Dieses Problem hängt wahrscheinlich mit Ihrer Build-Umgebung zusammen. Viele mathematisch schwere Bibliotheken in Python basieren auf nativ kompilierten C-Modulen für die Leistung. Sie können mehr darüber lesen here Wenn Ihre Build-Umgebung nicht mit der Ausführungsumgebung von Lambda übereinstimmt, kann Python keine systemeigenen Module laden, die für Ihre Build-Umgebung kompiliert wurden. Die Ausführungsumgebung von AWS Lambda basiert auf amzn-ami-hvm-2016.03.3.x86_64-gp2 wie dokumentiert here.

Ich stieß auf das gleiche Problem bei der Verwendung von AWS CodeBuild, um ein Python-Bereitstellungspaket mit dem aws/codebuild/python: 3.5.2-Build-Image zu erstellen. Nach der Verwendung von this als mein Build-Image konnte der Lambda das native Modul laden. Wenn Sie Ihr Bereitstellungspaket lokal erstellen, würde ich Ihnen empfehlen, einen Andock-Container mit einem Image zu erstellen, das mit Ihrer Lambda-Laufzeit kompatibel ist, und auf diesem Container aufzubauen.