it-roy-ru.com

Лямбда-функция AWS возвращает "Не удается найти модуль 'index'", но обработчик в конфигурации настроен на index

Как объясняет мой заголовок, я получаю следующую ошибку:

 {
  "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)"
  ]
}

Я попробовал оба решения, представленные в создание-лямбда-функции-в-aws-из-Zip-файла и simple-node-js-example-in-aws-lambda

Мой конфиг в настоящее время выглядит так:  enter image description here

и моя файловая структура:  enter image description here

и моя функция обработчика index.js выглядит так:

exports.handler = function(event, context) {

Что еще может быть причиной этой проблемы помимо того, что было указано в этих двух ответах выше? Я попробовал оба решения, и я также выделил больше памяти для функции, только если она не может быть запущена.

РЕДАКТИРОВАТЬ - Ради попытки, я создал еще более простую версию моего исходного кода, и это выглядело так:

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();

И все же все равно не работает с такой же ошибкой?

26
Andrew Font

Попробуйте заархивировать и загрузить содержимое папки lambda-create-timelapse. Не сама папка.

46
tahsintahsin

Если это было неясно для кого-то еще, вот шаги:

Шаг 1 Перейдите в папку вашего проекта и откройте эту папку, чтобы вы оказались внутри папки:  Folder

Шаг 2 Выберите все изображения, в которые вы хотите загрузить Lambda:  Folder with selected files

Шаг 3 Щелкните правой кнопкой мыши и сожмите выбранные вами файлы:  Right-click menu with compress option highlighted


Это даст вам файл .Zip, который вам нужно загрузить в Lambda:

 Archive.Zip output


Есть много способов автоматизировать это, но это ручная процедура.

15
Tyler

Я сам сталкивался с этой проблемой несколько раз, и это действительно связано с архивированием папки, а не с содержимым, как вы должны.

Для тех, кто работает с терминала ...

Пока ВНУТРИ каталога, в котором находятся файлы .js, выполните следующее:

Zip -r ../zipname.Zip *

* инструктирует клиента заархивировать все содержимое этой папки, ../zipname.Zip говорит ему назвать файл zipname.Zip и поместить его прямо за пределы этого текущего каталога.

5
Michael Du

У меня была такая же проблема некоторое время назад - я переформатировал код.

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

exports.handler = lambdafunc1
2
Naveen Vijay

Правильное объявление функции Lambda может выглядеть так:

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

exports.handler = func;

У вас могут быть другие синтаксические ошибки, которые мешают правильному запуску файла index.js. Попробуйте запустить свой код локально, используя другой файл и используя index.js в качестве собственного модуля.

0
kixorz

Проблема возникает, когда обработчик не может быть расположен в Zip на первом уровне. Поэтому в любое время, когда вы видите такую ​​ошибку, убедитесь, что файл находится на первом уровне в разобранной папке. 

Чтобы исправить это Zip файлы, а не папка, в которой находятся файлы.

0
Sushil Ojha