Ответ 1
Попробуйте закрепить и загрузить содержимое папки lambda-create-timelapse. Не сама папка.
Как объясняется в моем заголовке, я получаю следующую ошибку:
{
"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)"
]
}
Я пробовал оба решения, представленные в creating-a-lambda-function-in-aws-from-zip-file и simple-node-js-example-in-aws-lambda
Теперь моя конфигурация выглядит следующим образом:
и моя функция обработчика 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();
И все же не работает с той же ошибкой?
Попробуйте закрепить и загрузить содержимое папки lambda-create-timelapse. Не сама папка.
Если это было непонятно для кого-либо еще, выполните следующие действия:
Шаг 1
Перейдите в папку вашего проекта и откройте эту папку, чтобы вы попали в папку:
Шаг 2
Выберите все изображения, которые вы хотите загрузить, в Lambda:
Шаг 3
Щелкните правой кнопкой мыши и сжимайте файлы, которые вы выбрали:
Это даст вам .zip файл, который является файлом, который необходимо загрузить в Lambda:
Существует множество способов автоматизировать это, но это ручная процедура.
Я столкнулся с этой проблемой несколько раз сам, и это действительно связано с заменой папки вместо простого содержимого, как вы предполагали.
Для тех, кто работает с терминалом...
В то время как INSIDE в каталоге, где находятся файлы .js, выполните следующие действия:
zip -r ../zipname.zip *
*
дает клиенту указание закрепить все содержимое этой папки, ../zipname.zip
сообщает ему имя файла zipname.zip
и помещает его прямо за пределы этого текущего каталога.
У меня была такая же проблема когда-то - я переформатировал код.
function lambdafunc1(event, context) {
...
...
...
}
exports.handler = lambdafunc1
Правильное объявление функции Lambda
может выглядеть следующим образом:
var func = function(event, context) {
...
};
exports.handler = func;
У вас могут быть другие синтаксические ошибки, препятствующие правильному запуску файла index.js
. Попробуйте запустить свой код локально с помощью другого файла и с помощью index.js
в качестве собственного модуля.