2016-02-05 20 views
1

我有這樣的代碼在一個名爲awslambda.js處理程序缺少模塊「awslambda」當代碼上傳的zip文件

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文件上傳的特殊情況是什麼?

回答

1

答案似乎是'awslambda'已經是Lambda環境中的一個模塊。當我將文件從awslambda.js更改爲bullionAwsLambda.js並相應地更改處理程序時,它可以正常工作。

一個讓我失去了很多時間的鬼鬼祟祟的人!

0

這種最常見的錯誤是你壓縮的文件夾,然後取而代之的是:

zip contains: 
- awslambda.js 
- otherFiles.js 

您現在得到這樣的:作爲

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

,該文件夾是在zip (包含代碼)而不是文件夾的內容。該文件夾本身不應該壓縮,以便awslambda.js文件位於zip文件的根目錄中。

解決方法:不壓縮文件夾(右鍵單擊 - >壓縮),但打開文件夾,選擇所有文件,然後右鍵單擊 - >壓縮。

+0

謝謝Luc。我的文件夾結構正確,似乎awslambda是Lambda運行時環境中的一個模塊! –