通过回调从lambda获取响应,并让lambda继续工作

时间:2019-03-28 16:37:55

标签: aws-lambda

让我说我有这个lambda函数:

exports.handler = (event, context, callback) => {
  lambda.invoke({
    FunctionName: 'longCheckout',
    InvocationType: 'Event',
    Payload: JSON.stringify(event, null, 2) // pass params
  }, function(error, data) {

    console.log(error, data)
    callback(null, data);
  });
};

,我想调用longCheckout lambda来完成一些工作,然后将响应发送回给正在调用的lambda,然后继续执行更长的请求。因此,我正在调用的lambda函数具有一个回调参数,但是当我调用传入的函数时,调用lambda不会发生任何事情。这就是我要调用的lambda的样子

exports.handler = (event, test, callback) => {
  docClient.update(params, function(err, data) {
    callback(....)
    // continue to execute 
  })
}

1 个答案:

答案 0 :(得分:1)

Lambda可以同步(您使用的默认行为)或异步调用。 如果您选择异步调用,则两个lambda将同时运行,但是您将无法获得任何返回值。

一种可以满足您要求的解决方案是:

  1. Lambda 1同步调用Lambda 2
  2. Lambda 2调用docClient.update并异步调用Lambda 3(然后返回)。
  3. Lambda 3完成其余所需的执行。

阅读this有关异步调用的信息。