【问题标题】:Lambda function gives 502 internal server error when function declared async当函数声明为异步时,Lambda 函数给出 502 内部服务器错误
【发布时间】:2020-01-16 22:33:54
【问题描述】:

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

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) {

【问题讨论】:

  • Abhishek Rathore,你是怎么解决的?

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


【解决方案1】:

不带回调试试,直接返回。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-07
    • 2020-11-25
    • 2019-07-29
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多