AWS Lambda:exports.handler未运行promise函数

时间:2018-10-03 21:08:07

标签: aws-lambda

这不起作用:

exports.handler = (username, password) => {
    return {
        login: () => login(username, password),
        processLogin,
        generateReport
    };
};

当我更改为该功能时,但是...

exports.handler = (username, password) => {

    login(username, password);
    processLogin();
    generateReport();
};

...它不遵循命令。如何使其在AWS Lambda上运行?以我的理解,该过程如下:首先运行login,完成processLogin之后,开始运行generateReportgenerateReport看起来像这样:

function generateReport(token)...

表示函数从之前运行的processLogin中获取一些参数。无论如何,我该如何运作?

请让我知道是否需要其他信息。

1 个答案:

答案 0 :(得分:0)

您的第一个版本不返回Promise,而是返回一个对象。不执行任何代码。此外,处理程序参数应与AWS API匹配。

您的代码应明确返回承诺:

exports.handler = (event, context) => {
  username = extractUsername(event);
  password = extractPassword(event);

  return Promise.resolve()
           .then(() => login(username, password))
           .then(() => processLogin())
           .then(() => generateReport())
           .catch(err) => handleError());
}