首页 文章

使用API网关处理AWS Lambda函数中的错误

提问于
浏览
2

每次我遇到语法错误或者我只想在AWS Lambda函数中发送自定义错误时,我都会得到相同的502 Bad Gateway响应(内部服务器错误) .

我试过那个简单的代码:

module.exports.saveImage = (event, context, callback) => {
    callback("the sky is falling!"); // also tried sending new Error("the sky is falling!")
}

仍然得到相同的“内部服务器错误”响应而不是定义的响应 .

这是我在serverless.yml文件中的函数:

saveImage:
  handler: handler.saveImage
  environment:
    BUCKET: ${self:custom.bucket}
  events:
  - http:
      path: saveImage
      method: post
      cors: true,
      integration: lambda-proxy

我可能误解了这篇文章的内容吗?它似乎收到了“errorMessage”:“天空正在下降!”在API网关响应中(这就是我所期望的) .

https://aws.amazon.com/es/blogs/compute/error-handling-patterns-in-amazon-api-gateway-and-aws-lambda/

1 回答

  • 3

    如果您使用 integration: lambda-proxy ,则需要从Lambda返回正确的错误响应,而不是从API网关返回 .

    在这种情况下,您可以使用已经尝试过的内容:

    callback(null, { body: JSON.stringify( { errorMessage: "my error" })
    

    我以为我们可以使用第一个参数发送错误

    你可以,如果你在 serverless.yml 中使用 integration: lambda ,但在你的情况下,你不是 .

相关问题