AWS Lambda获取上下文消息

Jon*_*God 3 amazon-web-services node.js aws-lambda

我正在使用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
};
Run Code Online (Sandbox Code Playgroud)

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

一切正常:

//Console Output
{ Status: 202 }
Run Code Online (Sandbox Code Playgroud)

但我期待从context.done(null,'Message')收到消息......

知道如何获取消息吗?

Wil*_*aul 5

正如Eric所提到的,目前Lambda没有提供REST端点来运行该函数并返回其结果,但可能在未来.

现在,您最好的选择是使用像lambdaws这样的库,它为您包装函数部署和执行,并通过SQS队列处理返回结果.如果您想通过滚动自己的解决方案来获得更多控制权,那么这个过程非常简单:

  1. 创建SQS队列
  2. 让您的Lambda函数将其结果写入此队列
  3. 在您的客户端中,轮询队列以获得结果