2016-02-05 3 views
1

У меня есть этот код в файле с именем awslambda.jsHandler отсутствует на модуле «awslambda», когда код загружен в почтовый файл

console.log('Loading function'); 

exports.bullion = function(event, context) { 
    //console.log('Received event:', JSON.stringify(event, null, 2)); 
    var message = event.Records[0].Sns.Message; 
    console.log('From SNS:', message); 
    context.succeed(message); 
}; 

Я ZiP его так, это выглядит следующим образом:

bullion $ unzip -l target/bullion-dev-for-lambda.zip 
Archive: target/bullion-dev-for-lambda.zip 
    Length  Date Time Name 
-------- ---- ---- ---- 
     268 02-05-16 10:39 awslambda.js 
--------     ------- 
     268     1 file 

я загрузить его на AWS Lambda и настроить Handler быть

awslambda.bullion 

Я проверить функцию, и я получаю

{ 
    "errorMessage": "Handler 'bullion' missing on module 'awslambda'" 
} 

Если я ввожу тот же код в функцию лямбда, он работает! Каков особый случай с загрузкой zip-файла?

ответ

1

Ответ, похоже, что «awslambda» уже является модулем в среде Lambda. Когда я меняю файл с awslambda.js на bullionAwsLambda.js и соответственно меняю обработчик, он работает.

Проницательный, который потерял меня много времени!

0

Самая распространенная ошибка при этом является то, что вы заархивировать папку, то вместо этого:

zip contains: 
- awslambda.js 
- otherFiles.js 

Теперь получите это:

zip contains: 
- foldername/ 
    - awslambda.js 
    - otherFiles.js 

Как и папка находится в почтовый индекс (содержащий код), а не содержимое папки. Сама папка не должна быть заархивирована, так что файл awslambda.js находится в корневом каталоге zip-файла.

Чтобы исправить это: не сжимайте папку (щелкните правой кнопкой мыши -> сжать), но откройте папку, выберите все файлы, а затем щелкните правой кнопкой мыши -> сжать.

+0

Спасибо, Luc. У меня была правильная структура папок, просто кажется, что awslambda является модулем в среде Lambda runtime env! –

Смежные вопросы