当然,我误会了这个问题。正如AWS自己所说的那样:
对于那些在Lambda中首次遇到nodejs的人来说,一个常见的错误是忘记了回调是异步执行的,而
context.done()当您确实要等待另一个回调(例如S3.PUT操作)完成时,则调用
原始处理程序,从而强制执行该函数因工作不完整而终止。
context.done在请求的任何回调被触发之前,我正在调用way,导致我的函数提前终止。
工作代码是这样的:
var http = require('http');exports.handler = function(event, context) { console.log('start request to ' + event.url) http.get(event.url, function(res) { console.log("Got response: " + res.statusCode); context.succeed(); }).on('error', function(e) { console.log("Got error: " + e.message); context.done(null, 'FAILURE'); }); console.log('end request to ' + event.url);}更新: 从2017年开始,AWS已弃用旧的Nodejs
0.10,现在仅提供新的4.3运行时(应更新旧功能)。该运行时对处理程序函数进行了一些更改。现在,新处理程序具有3个参数。
function(event, context, callback)
虽然你仍然会发现
succeed,
done和
fail上下文参数,AWS建议使用的
callback功能,而不是或
null默认情况下返回。
callback(new Error('failure')) // to return errorcallback(null, 'success msg') // to return ok完整的文档可以在http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-
handler.html中找到



