Node.js 使用Promise.all()时,AWS Lambda返回502

Node.js 使用Promise.all()时,AWS Lambda返回502,node.js,amazon-web-services,rest,aws-lambda,serverless,Node.js,Amazon Web Services,Rest,Aws Lambda,Serverless,端点在每个条件下都返回502。我认为我的响应结构正确,但我仍然从端点得到502个坏网关错误 当我没有处理Promise.all()时,响应是有效的 这个函数的超时时间是30秒,顺便说一句,但不会花那么长时间 我有一个这样的处理程序: module.exports.handler= async function (event, context, callback) { await Promise.all([promise1(), promise2()]) .then((value) =

端点在每个条件下都返回502。我认为我的响应结构正确,但我仍然从端点得到502个坏网关错误

当我没有处理Promise.all()时,响应是有效的

这个函数的超时时间是30秒,顺便说一句,但不会花那么长时间

我有一个这样的处理程序:

module.exports.handler= async function (event, context, callback) {
  await Promise.all([promise1(), promise2()])
    .then((value) => {
      promise3(value[0], value[1])
        .then(() => {
          const response = {
            statusCode: 200,
            body: JSON.stringify({
              message: "Successful",
            }),
          };
          callback(null, response);
        })
        .catch((err) => {
          const response = {
            statusCode: 401,
            body: JSON.stringify({
              message: err,
            }),
          };
          callback(null, response);
        });
    })
    .catch((err) => {
      const response = {
        statusCode: 500,
        body: JSON.stringify({
          message: err,
        }),
      };
      callback(null, response);
    });
};

从API网关测试中得到的错误:

Sat Dec 05 09:24:08 UTC 2020 : Endpoint response body before transformations: null
Sat Dec 05 09:24:08 UTC 2020 : Execution failed due to configuration error: Malformed Lambda proxy 
response
Sat Dec 05 09:24:08 UTC 2020 : Method completed with status: 502

你应该坚持使用
等待
。然后
,而不是同时使用这两种方法

由于您的处理程序已经是
async
,因此您最好使用
wait

我修改了下面的代码,使其不再使用
。然后
(未测试)


你应该坚持使用
等待
。然后
,而不是同时使用这两种方法

由于您的处理程序已经是
async
,因此您最好使用
wait

我修改了下面的代码,使其不再使用
。然后
(未测试)


它起作用了,非常感谢。但在您的代码中,您忘记在200状态代码中添加“callback(null,response)”。很高兴它能工作。谢谢,我已经编辑了callbackIn offline Deployment函数,它在2.5秒内返回,但在联机状态下超时(30秒)。你知道为什么会发生这种情况吗?确定,添加“context.callbackaitsforeptyeventloop=false;”修复了问题。它正在工作,非常感谢。但在您的代码中,您忘记在200状态代码中添加“callback(null,response)”。很高兴它能工作。谢谢,我用callback编辑了离线部署函数,它在2.5秒内返回,但在在线部署中超时(30秒),你知道为什么会发生这种情况吗?确定添加“context.callbackaitsforeptyeventloop=false;”修复了问题。
module.exports.handler= async function (event, context, callback) {
    try
    {
        var values = await Promise.all([promise1(), promise2()]);

        try
        {
            await promise3(values[0], values[1]);
            const response = {
                statusCode: 200,
                body: JSON.stringify({
                    message: "Successful",
                })
            };
            callback(null, response);
        }
        catch(err)
        {
            const response = {
                statusCode: 401,
                body: JSON.stringify({
                    message: err,
                })
            };
            callback(null, response);
        }
    }
    catch(err) 
    {
        const response = {
            statusCode: 500,
            body: JSON.stringify({
                message: err,
            })
        };
        callback(null, response);
    }
}