Ich versuche das serverless
Framework zu verwenden, um eine AWS Lambda-Funktion zu erstellen und bereitzustellen. Ich habe einen Ordner mit dem Namen vendored
im Stammverzeichnis des Projekts erstellt und die Funktionsabhängigkeiten installiert (mit pip install
). Jedes Mal, wenn ich versuche, es zu laufen (mit serverless function run
) Ich habe einen Fehler:Wie stelle ich eine Funktion in Python mit ihren Abhängigkeiten bereit?
Serverless: Running isNewUser...
Serverless: WARNING: This variable is not defined: region
Serverless: -----------------
Serverless: Failed - This Error Was Returned:
Serverless: {"exception": ["Traceback (most recent call last):\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\", line 170, in \n handler = import_program_as_module(path)\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\", line 149, in import_program_as_module\n module = make_module_from_file('lambda_handler', handler_file)\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\", line 129, in make_module_from_file\n py_source_description\n", " File \"/home/fernando/workspace/os-cac/isNewUser/handler.py\", line 11, in \n from vtex.order import Order\n", "ImportError: No module named vtex.order\n"], "success": false} Serverless: Exception message from Python
Serverless: Traceback (most recent call last): , File "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", line 170, in handler = import_program_as_module(path) , File "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", line 149, in import_program_as_module module = make_module_from_file('lambda_handler', handler_file) , File "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", line 129, in make_module_from_file py_source_description , File "/home/fernando/workspace/os-cac/isNewUser/handler.py", line 11, in from vtex.order import Order ,ImportError: No module named vtex.order `
vtex.order
ist ein Modul in handler.py importiert
Die Struktur meines Projektes ist es so etwas wie:
/root/
|
|--_meta/
|--vendored/
|--dependencies...
|--function-name/
|--handler.py
|--event.json
|--s-function.json
|--requirements.txt
|--admin.env
|--package.json
|--s-project.json
|--s-resources-cf.json
|--s-project.json
Gibt es irgendetwas, was ich falsch mache? Sollte ich irgendwie meine Funktion so konfigurieren, dass die Abhängigkeiten von vendored enthalten sind?
Dank installiert ist! Es funktionierte! –
Aufzählungszeichen # 1 ist, was ich vermisst wurde, danke. – panchicore
Beachten Sie, dass die Bibliotheken, die Sie in das Serverless-Paket einbinden, in der AWS Lambda-Umgebung möglicherweise nicht funktionieren. Dies gilt normalerweise nur für nicht-reine Python-Bibliotheken wie Kryptographie, cffi und andere.Wenn Sie darauf stoßen, können Sie entweder Bibliotheken von einer Ressource wie https://github.com/Miserlou/lambda-packages abholen, oder Sie können die Pip-Installationen auf einem Linux-Rechner durchführen, der nah genug an Amazon Linux ist (ich habe es benutzt) Centos 6-x64) und kopieren Sie aus dem Site-Packages-Verzeichnis, das auffüllt. Wenn jemand mehr Details benötigt, antworten Sie hier und ich werde eine Frage und Antwort hinzufügen. –