从异步AWS Lambda返回数据

时间:2016-07-21 19:46:36

标签: node.js amazon-web-services asynchronous aws-lambda

如何将作为事件调用的lambda数据恢复回调用函数?

基本上我的lambda函数是:

exports.handler = function(event, context, callback) {
    var data = {};
    data.foo ='hello';
    callback(null, data)
}

,调用函数如下所示:

var AWS = require('aws-sdk');

var lambda = new AWS.Lambda();
var params = {
    FunctionName: 'SomeFunction',
    InvocationType: 'Event'
};

lambda.invoke(params, function (err, data) {
    if (err) {
        console.log(err, err.stack); // an error occurred
    } else {
        console.log(JSON.stringify(data, null, 2));
    }
});

然而,我从该功能回来的唯一事情是

{
  "StatusCode": 202,
  "Payload": ""
}

我认为回调参数的意思是允许调用函数在函数完成时获取数据。我使用它是错误的还是我对Lambdas不可能的要求?

1 个答案:

答案 0 :(得分:5)

当您调用Lambda函数时,您需要将InvocationType设置为'RequestResponse'而不是'Event'

使用Event类型时,当AWS的服务器收到有效负载时,将调用您的回调。使用RequestResponse类型时,只有在Lambda函数完成后才会调用回调,并且您将收到它提供给其回调的数据。使用Event类型无法执行您想要的操作。