当代码作为 zip 文件上传时,模块 'awslambda' 上缺少处理程序
Handler missing on module 'awslambda' when code uploaded as zip file
我将此代码保存在一个名为 awslambda.js
的文件中
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);
};
我把它压缩成这样:
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 并将处理程序配置为
awslambda.bullion
我测试了这个函数,我得到了
{
"errorMessage": "Handler 'bullion' missing on module 'awslambda'"
}
如果我在 Lambda 函数中键入相同的代码,它就可以工作! zip 文件上传有什么特殊情况?
最常见的错误是您压缩了文件夹,而不是:
zip contains:
- awslambda.js
- otherFiles.js
你现在明白了:
zip contains:
- foldername/
- awslambda.js
- otherFiles.js
例如,文件夹在 zip 中(包含代码)而不是文件夹的内容。文件夹本身不应压缩,因此 awslambda.js 文件位于压缩文件的根目录中。
要解决此问题:不要压缩文件夹(右键单击 -> 压缩),而是打开文件夹,select 所有文件,然后右键单击 -> 压缩。
答案似乎是 'awslambda' 已经是 Lambda 环境中的一个模块。当我将文件从 awslambda.js 更改为 bullionAwsLambda.js,并相应地更改处理程序时,它起作用了。
一个让我浪费了很多时间的偷偷摸摸的人!
我将此代码保存在一个名为 awslambda.js
的文件中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);
};
我把它压缩成这样:
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 并将处理程序配置为
awslambda.bullion
我测试了这个函数,我得到了
{
"errorMessage": "Handler 'bullion' missing on module 'awslambda'"
}
如果我在 Lambda 函数中键入相同的代码,它就可以工作! zip 文件上传有什么特殊情况?
最常见的错误是您压缩了文件夹,而不是:
zip contains:
- awslambda.js
- otherFiles.js
你现在明白了:
zip contains:
- foldername/
- awslambda.js
- otherFiles.js
例如,文件夹在 zip 中(包含代码)而不是文件夹的内容。文件夹本身不应压缩,因此 awslambda.js 文件位于压缩文件的根目录中。
要解决此问题:不要压缩文件夹(右键单击 -> 压缩),而是打开文件夹,select 所有文件,然后右键单击 -> 压缩。
答案似乎是 'awslambda' 已经是 Lambda 环境中的一个模块。当我将文件从 awslambda.js 更改为 bullionAwsLambda.js,并相应地更改处理程序时,它起作用了。
一个让我浪费了很多时间的偷偷摸摸的人!