当函数声明为异步时,Lambda函数会给出502内部服务器错误

时间:2019-09-16 05:37:25

标签: node.js async-await aws-lambda

我有一个HTTP GET事件lambda函数(LA),该函数在内部调用另一个lambda(LB)。

LA lambda的代码

const AWS = require("aws-sdk");
let lambda = new AWS.Lambda();

export function main(event, context, callback) {
  var params = {
    FunctionName: "app-dev-lb",
    InvocationType: "RequestResponse",
    LogType: "Tail",
    Payload: JSON.stringify("abc")
  };

  lambda.invoke(params, function(err, data) {
    if (err) {
      callback(null, failure(err));
    } else {
      callback(null, success(data.Payload));
    }
  });
}

LB lambda的代码

export async function main(event, context, callback) {
  callback(null, success({ name: "Abhi" }));
}

上面用于LA和LB lambda的代码可以正常工作,并在响应正文中使用{ name: "Abhi" }给出响应200。

但是,只要我在LA lambda函数中添加async,它就会为响应502提供响应主体{message: 'Internal Server Error'}

LA函数更新为

export async function main(event, context, callback) {

1 个答案:

答案 0 :(得分:0)

尝试不使用回调并直接返回。

exports.handler = async(event, context) => {
    lambda.invoke = util.promisify(lambda.invoke);
    return await lambda.invoke({
        FunctionName: 'yourLambda',
        Payload: yourPayload
    });
};