AWS API Gateway和Lambda中的错误处理始终返回502

时间:2017-02-17 14:09:48

标签: amazon-web-services lambda aws-api-gateway serverless-framework

我使用无服务器来实现Lambda和Api网关。 当我实现错误处理时,下面的代码总是得到502坏网关。

handler.js

module.exports.hello = (event, context, callback) => {
  const response = {
      statusCode: 400,
      headers: {
        "Content-Type" : "application/json"
      },
      body: JSON.stringify({
        "status": "error",
        "message": "Missing Params"
      })
    };
    callback(response);
};

CloudWatch执行日志错误。

{
    "errorMessage": "[object Object]"
}

我按照这种方式进行编码,方法是"自定义错误对象序列化"在AWS博客下面。 Ref

2 个答案:

答案 0 :(得分:4)

我将callback first parms更改为null并正常工作。 Ref

module.exports.hello = (event, context, callback) => {
  const response = {
      statusCode: 400,
      headers: {
        "Content-Type" : "application/json"
      },
      body: JSON.stringify({
        "status": "error",
        "message": "Missing Params"
      })
    };
    callback(null, response);
};

答案 1 :(得分:0)

这是Node.js中的常见模式,称为 错误优先回调

基本上,如果你将第一个参数传递给你的回调,它将被视为错误。

正如你所提到的,一旦你放了callback(null, response);,它就会按预期工作,因为第一个参数是null。