【问题标题】:Can't call callback with nodejs, aws lambda and aws api gateway无法使用 nodejs、aws lambda 和 aws api 网关调用回调
【发布时间】:2017-11-13 23:43:16
【问题描述】:

我无法在 lambda 中进行回调以在 API Gateway 中发送响应。我正在尝试构建一个与 MySQL 数据库交互的简单应用程序。相关代码sn-p如下。

问题在于,即使 validateToken 会返回错误并且我会看到 console.log 消息,但 done/callback 永远不会将预期的响应发送到 api 网关,并且会继续处理之后的任何代码。

exports.handler = (event, context, callback) => {

    const done = (err, res) => callback(null, {
        statusCode: err ? '400' : '200',
        body: err ? err.message : JSON.stringify(res),
        headers: {
            'Content-Type': 'application/json',
        },
    });

    if (event.path.match(/myApi\/workers\/*/)) {
      // Validate Token
      token.validateToken(pool, event.headers, function(err, result) {
        if (result.status == 'error') {
          console.log('Made it to here')
          done({"message": "Invalid api-token"}, null);
        } else {
          // Proceed with fetching workers
        }
      });
    }
  }

任何帮助将不胜感激!

【问题讨论】:

  • 该函数在 Lambda 测试控制台中有效吗?处理函数需要多长时间?
  • 它的工作原理是它不会引发错误,但也不会像预期的那样返回“无效的 api-token”。我一直在通过控制台中的 API Gateway 测试器进行大部分测试。为此,还通过 Lambda 进行了测试。
  • 很抱歉忘记回答您的“处理需要多长时间”的问题。它目前超时,因为它永远不会返回。

标签: node.js amazon-web-services lambda aws-lambda aws-api-gateway


【解决方案1】:

原来我的问题和这里发布的一样。

AWS Lambda function never calls the callback

我试图通过删除 mysql 部分来简化代码,但没有意识到这是导致问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2019-09-23
    • 2017-10-19
    • 2019-09-28
    • 2019-05-02
    • 2017-07-13
    • 2019-05-11
    相关资源
    最近更新 更多