从异步AWS Lambda返回数据

use*_*726 0 asynchronous amazon-web-services node.js aws-lambda

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

基本上我的lambda函数是:

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

并且调用函数如下所示:

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));
    }
});
Run Code Online (Sandbox Code Playgroud)

然而,我唯一从功能中回来的是

{
  "StatusCode": 202,
  "Payload": ""
}
Run Code Online (Sandbox Code Playgroud)

我认为回调参数的意思是允许调用函数在函数完成时获取数据.我使用它错了还是我问Lambda不可能的?

idb*_*old 6

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

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

  • @ user2127726不,使用`RequestResponse`类型不会使调用同步. (2认同)