Importfehler von cyptography.hazmat.bindings._constant_time import lib

8

Ich versuche also eine aws-Lambda-Funktion zu erstellen, mich bei einer Instanz anzumelden und etwas zu tun. Und das Skript funktioniert gut außerhalb von Lambda, aber wenn ich es mit den gleichen Anweisungen wie diese Ссылка funktioniert es nicht. Es wirft diesen Fehler auf.

%Vor%     
Luis F Hernandez 15.08.2016, 22:14
quelle

2 Antworten

17

Bei den zip-Befehlen in diesem Lernprogramm fehlt ein Parameter. Ich habe heute mit Pysftp, das auf Paramiko aufgebaut ist, genau auf dieses Problem gestoßen. libffi-72499c49.so.6.0.4 befindet sich in einem versteckten Punktverzeichnis in lib64/python2.7/site-packages/.libs_cffi_backend . Je nachdem, wie Sie die Abhängigkeiten in Ihrem virtualenv gezippt haben, haben Sie dieses Verzeichnis versehentlich ausgeschlossen.

  1. Stellen Sie zunächst sicher, dass libffi-devel und openssl-devel auf Ihrer installiert sind Amazon Linux-Instanz , andernfalls wird das Kryptografiemodul möglicherweise nicht korrekt kompiliert.

    %Vor%

Wenn diese Pakete vorher nicht installiert wurden, löschen Sie sie und erstellen Sie sie neu.

  1. Stellen Sie sicher, dass Sie beim Komprimieren Ihrer Site-Pakete, die Sie verwenden, '.' anstelle von '*', sonst werden keine Dateien und Verzeichnisse eingeschlossen, die versteckt sind, weil ihre Namen mit einem Punkt beginnen.

    %Vor%
Gabriel Burkholder 16.08.2016, 04:03
quelle
2

Meine 2 Cent: Wenn Sie Ihre Lambda-Funktion in der Umgebung so aufbauen und testen möchten, dass sie dem tatsächlichen Lambda möglichst ähnlich ist, aber immer noch unter Ihrer Kontrolle steht, würde ich vorschlagen, Die Docker-Bilder von LambdaCI . Sie basieren auf Dumps des ursprünglichen Lambda-Dateisystems. Außerdem haben sie Build-spezifische Varianten (die Tags build-python2.7 und build-python3.6 sind für uns am interessantesten). Diese Bilder sind nicht sehr klein - mehr als 500 MB - aber sie ermöglichen es Ihnen, beim Bauen keine Kopfschmerzen zu haben.

Wichtiger Vorteil gegenüber Amazon Linux ist, dass alle Paketversionen usw. denen des echten Lambdas entsprechen.

So habe ich mich aufgebaut:

%Vor%

Um es mit GitLab CI zu automatisieren, weisen Sie es einfach an, dasselbe Docker-Image zu verwenden und setze diese Befehle in den Skriptbereich deploy:

%Vor%     
MarSoft 14.07.2017 01:06
quelle