wake-up-neo.com

AWS Lambda Function gibt "Modul 'Index' kann nicht gefunden werden" zurück, der Handler in der Konfiguration ist jedoch auf Index gesetzt

Wie aus meinem Titel hervorgeht, erhalte ich folgende Fehlermeldung:

 {
  "errorMessage": "Cannot find module 'index'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._resolveFilename (module.js:338:15)",
    "Function.Module._load (module.js:280:25)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)"
  ]
}

Ich habe beide Lösungen ausprobiert, die in Erstellen einer-Lambda-Funktion-in-aws-from-Zip-Datei und Simple-Node-Js-Beispiel-In-AWS-Lambda erstellt wurden

Meine config sieht momentan so aus:  enter image description here

und meine Dateistruktur ist:  enter image description here

und meine index.js-Handler-Funktion sieht folgendermaßen aus:

exports.handler = function(event, context) {

Was könnte dieses Problem sonst verursachen, abgesehen von dem, was in den beiden obigen Antworten angegeben wurde? Ich habe beide Lösungen ausprobiert und der Funktion nur mehr Speicher zugewiesen, da sie nicht ausgeführt werden konnte.

EDIT - .__ Um das zu versuchen, habe ich eine noch einfachere Version meines ursprünglichen Codes erstellt, und er sah folgendermaßen aus:

var Q = require('q');
var AWS = require('aws-sdk');
var validate = require('lambduh-validate');
var Lambda = new AWS.Lambda();
var S3 = new AWS.S3();




theHandler = function (event, context) {

  console.log =('nothing');

}

exports.handler = theHandler();

Und trotzdem funktioniert es nicht mit dem gleichen Fehler?

26
Andrew Font

Versuchen Sie, den Inhalt des Ordners Lambda-Create-Timelapse zu komprimieren und hochzuladen. Nicht der Ordner selbst.

46
tahsintahsin

Wenn dies für jedermann unklar war, sind hier die Schritte:

Schritt 1 Navigieren Sie zu dem Ordner Ihres Projekts und öffnen Sie diesen Ordner, sodass Sie sich innerhalb des Ordners befinden:  Folder

Schritt 2 Wählen Sie alle Bilder aus, die Sie in Lambda hochladen möchten:  Folder with selected files

Schritt 3 Klicken Sie mit der rechten Maustaste und komprimieren Sie die ausgewählten Dateien:  Right-click menu with compress option highlighted


Dadurch erhalten Sie eine ZIP-Datei. Dies ist die Datei, die Sie zum Hochladen in Lambda benötigen:

 Archive.Zip output


Es gibt viele Möglichkeiten, dies zu automatisieren, dies ist jedoch der manuelle Vorgang.

15
Tyler

Ich bin selbst einige Male auf dieses Problem gestoßen, und dies hat in der Tat mit dem Zippen des Ordners zu tun, und nicht nur mit dem Inhalt, wie Sie es sollten.

Für diejenigen, die vom Terminal aus arbeiten ...

Führen Sie in INSIDE des Verzeichnisses, in dem sich die JS-Dateien befinden, Folgendes aus:

Zip -r ../zipname.Zip *

* weist den Client an, den gesamten Inhalt dieses Ordners zu komprimieren. ../zipname.Zip teilt ihm mit, dass er die Datei zipname.Zip benennen und direkt außerhalb dieses aktuellen Verzeichnisses platzieren soll.

5
Michael Du

Ich hatte das gleiche Problem vor einiger Zeit - ich habe den Code neu formatiert.

function lambdafunc1(event, context) {
...
...
...
}

exports.handler = lambdafunc1
2
Naveen Vijay

Die korrekte Funktionsdeklaration Lambda kann folgendermaßen aussehen:

var func = function(event, context) {
   ...
};

exports.handler = func;

Möglicherweise haben Sie andere Syntaxfehler, die die ordnungsgemäße Ausführung der Datei index.js verhindern. Führen Sie Ihren Code lokal mit einer anderen Datei aus und verwenden Sie index.js als eigenes Modul.

0
kixorz

Das Problem tritt auf, wenn der Handler auf der ersten Ebene nicht in der Zip-Datei lokalisiert werden kann. Wenn Sie einen solchen Fehler sehen, stellen Sie sicher, dass sich die Datei auf der ersten Ebene im aufgelösten Ordner befindet. 

Um dieses Problem zu beheben, packen Sie die Dateien und nicht den Ordner mit den Dateien.

0
Sushil Ojha