当代码作为zip文件上传时,处理程序在'awslambda'模块上丢失

时间:2016-02-05 10:45:05

标签: amazon-web-services aws-lambda

我将此代码放在名为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并将Handler配置为

awslambda.bullion

我测试了这个功能,我得到了

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

如果我在Lambda函数中输入相同的代码,它就可以了! zip文件上传的特殊情况是什么?

2 个答案:

答案 0 :(得分:1)

答案似乎是' awslambda'已经是Lambda环境中的一个模块。当我将文件从awslambda.js更改为bullionAwsLambda.js,并相应地更改Handler时,它可以正常工作。

偷偷摸摸的一个让我失去了很多时间的人!

答案 1 :(得分:0)

最常见的错误是你压缩文件夹,而不是这个:

zip contains:  
 - awslambda.js  
 - otherFiles.js

你现在得到这个:

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

同样,文件夹在zip(包含代码)中,而不是文件夹的内容。文件夹本身不应该压缩,因此awslambda.js文件位于zip文件的根目录中。

要解决此问题:请勿压缩文件夹(右键单击 - >压缩),但打开文件夹,选择所有文件,然后右键单击 - >压缩。