NodeJS中针对AWS Lambda的子回调

时间:2017-05-19 22:41:21

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

我的AWS Lambda如何对某些外部服务进行API调用并将输出返回给调用该函数的用户?

我的代码看起来像这样:

module.exports.oauth_callback = (event, context, callback) => {
  oauth2.authorizationCode.getToken({
    redirect_uri: 'https://' + event.headers.Host + event.requestContext.path
    }).then(results => {
      callback(null, {statusCode: 200, body: JSON.stringify(results)});
  });
};

有了这个,我收到一个500 Internal Error,因为我相信在返回结果之前lambda函数正在退出。

编辑案例2: 实际上在我添加另一个回调的情况下:

  return oauth2.authorizationCode.getToken({
      code: code,
    }).then(results => {
      createFirebaseAccount(results).then(token => {
        const template = signInFirebaseTemplate(token);
        return callback(null, { statusCode: 200, body: template.toString() });
      });
  });
};

我的变量template有它的值,但下一个回调永远不会返回,我的函数超时

1 个答案:

答案 0 :(得分:1)

我认为您可能需要从getToken()返回您的承诺,如下所示:

module.exports.oauth_callback = (event, context, callback) => {
  return oauth2.authorizationCode.getToken({
      redirect_uri: 'https://' + event.headers.Host + event.requestContext.path
    }).then(results => {
      callback(null, {statusCode: 200, body: JSON.stringify(results)});
    });
};

如果这不起作用,请检查Lambda监控标签下的CloudWatch日志。