3

AWS コンソールからテスト機能を使用しています。

console.log('Loading event');

exports.handler = function(event, context) {
    console.log('value1 = ' + event.key1);
    console.log('value2 = ' + event.key2);
    console.log('value3 = ' + event.key3);
    context.done(null, 'Hello World');  // SUCCESS with message
};

そして、次のように nodejs で呼び出します。

var params = {
  FunctionName: 'MY_FUNCTION_NAME', /* required */
  InvokeArgs: JSON.stringify({
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
  })
};

lambda.invokeAsync(params, function(err, data) {
  if (err) {
    // an error occurred
    console.log(err, err.stack);
    return cb(err);
  }
  // successful response
  console.log(data);
});

そしてすべてがうまくいきます:

//Console Output
{ Status: 202 }

しかし、 context.done(null, 'Message') からもメッセージを受け取ることを期待していました...

メッセージを取得する方法はありますか?

4

2 に答える 2

5

Eric が述べたように、現在 Lambda は関数を実行してその結果を返すための REST エンドポイントを提供していませんが、将来的には提供する可能性があります。

現時点では、関数のデプロイと実行をラップし、SQS キューを介して返される結果を処理するlambdawsなどのライブラリを使用することをお勧めします。独自のソリューションを導入してさらに制御したい場合、プロセスは簡単です。

  1. SQS キューを作成する
  2. Lambda 関数がその結果をこのキューに書き込むようにする
  3. クライアントで、キューをポーリングして結果を取得します
于 2015-01-13T21:50:55.613 に答える