Ich versuche, das serverless
-Framework zu verwenden, um eine AWS-Lambda-Funktion zu erstellen und zu implementieren. Ich habe einen Ordner namens vendored
im Stammverzeichnis des Projekts erstellt und die Funktionsabhängigkeiten installiert (mit pip install
). Jedoch, wenn ich versuche, es (mit serverless function run
) zu starten, habe ich einen Fehler:
Serverless: Ausführen isNewUser ...
Serverless: WARNUNG: Diese Variable ist nicht definiert: Region
Serverless: -----------------
Serverless: Fehlgeschlagen - Dieser Fehler wurde zurückgegeben:
Serverless: {"Ausnahme": ["Traceback (letzter Aufruf zuletzt): \ n", "Datei \" / home / fernando / .nvm / versionen / node / v5.10.1 / bin / serverless-run-python-handler \ ", Zeile 170, in \ n handler = Importprogramm_als_Modul (Pfad) \ n", "Datei \" / home / fernando / .nvm / versionen / node / v5.10.1 / bin / serverless-run-python-handler \ " , Zeile 149, in import_program_as_module \ n modul = make_module_from_file ('lambda_handler', handler_file) \ n "," Datei \ "/ home / fernando / .nvm / versionen / node / v5.10.1 / bin / serverless-run-python handler \ ", Zeile 129, in make_module_from_file \ n py_source_description \ n", "Datei \" / home / fernando / workspace / os-cac / isNewUser / handler.py \ ", Zeile 11, in \ n aus vtex.order importieren Order \ n "," ImportError: Kein Modul namens vtex.order \ n "]," Erfolg ": false} Serverless: Ausnahmemeldung von Python
Serverless: Traceback (letzter Aufruf zuletzt): , Datei "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", Zeile 170, in handler = import_program_as_module (Pfad) , Datei "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", Zeile 149, in import_program_as_module modul = make_module_from_file ('lambda_handler', handler_file) , Datei "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", Zeile 129, in make_module_from_file py_source_description , Datei "/home/fernando/workspace/os-cac/isNewUser/handler.py", Zeile 11, in von vtex.order Importauftrag , ImportError: Kein Modul namens vtex.order "
vtex.order
ist ein in handler.py importiertes Modul
Die Struktur meines Projekts ist ungefähr wie folgt:
%Vor%Gibt es irgendetwas, was ich falsch mache? Sollte ich irgendwie meine Funktion so konfigurieren, dass sie die Abhängigkeiten von vendored enthält?
Hier sind ein paar Schritte, die es funktionieren lassen sollten:
s-function.json
den Funktionsnamen in seinem Pfad hat:
%Code%
in "handler": "function-name/handler.handler",
fügen Sie Folgendes hinzu:
Das ist es. Lass es mich wissen, wenn es funktioniert.
Ich habe die folgenden Schritte zur Bereitstellung mit Abhängigkeiten ausgeführt:
Erstellt ein Verzeichnis für Abhängigkeiten im Projektstamm mkdir .vendor
Fügen Sie Abhängigkeiten in der Datei "requirements.txt" manuell hinzu oder verwenden Sie pip freeze > requirements.txt
Aktualisieren Sie die Datei serverless.yml
package:
include:
- .vendor/**
import sys
sys.path.insert(0, './.vendor')
pip install -r requirements.txt -t .vendor
Jetzt wird serverless deploy
eine Funktion mit Abhängigkeiten hochladen.
Ich würde empfehlen, das Serverless-Python-Requirements Plugin zu verwenden, um Pakete einzubinden, die über pip
Tags und Links python amazon-web-services aws-lambda serverless-framework