2016-07-21 5 views
0

イベントとして呼び出されたラムダから呼び出し関数にデータを戻すにはどうすればよいですか?async AWS Lambdaからデータを返します

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

と呼び出し機能は、次のようになります:

基本的に私が持っているラムダ関数である私は、関数から取り戻す唯一のものは

{ 
    "StatusCode": 202, 
    "Payload": "" 
} 
あるしかし

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)); 
    } 
}); 

コールバックパラメータのポイントは、呼び出し関数がdatを取得できるようにすることだと考えましたa。関数が終了したとき。私はそれを間違って使っているのですか、それともLambdasでは不可能なことですか?

答えて

-2

コールバックの使用についてはわかりませんが、コンテキストを使用してデータを返すことができます。あなたのケースでは、試してみてください。

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

を使用すると、ラムダ関数を呼び出すと、あなたが'RequestResponse'代わりの'Event'InvocationTypeを設定する必要があります。

Eventタイプを使用すると、AWSのサーバーによってペイロードが受信されたときにコールバックが呼び出されます。 RequestResponseタイプを使用する場合、コールバックはラムダ関数が完了した後にのみ呼び出され、コールバックに提供されたデータを受け取ります。 Eventタイプでは、あなたが望むことはできません。

+0

「イベント」タイプではできませんか?コールバックパラメータのポイントは、呼び出す関数が実行完了時にラムダからデータを取得できるようにすることだと思いましたか? – user2127726

+0

@ user2127726編集を参照してください。 – idbehold

+0

恥。 'コールバックに情報を返すためにオプションのコールバックを使用することができます。それ以外の場合は戻り値はnullです。コールバックを使用して呼び出しの結果を返すことができます。 – user2127726

関連する問題