You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda自定义@middy中间件返回错误触发502异常如何解决

问题原因

  • 核心原因是中间件加载顺序错误。Middy的onError钩子执行顺序与中间件添加顺序相反,你当前将自定义授权中间件放在httpErrorHandler之后添加,授权中间件抛出的错误无法被httpErrorHandler的错误捕获逻辑处理,导致最终返回的响应结构不符合函数触发器(如AWS API Gateway)的要求,触发器识别到非法响应结构就会返回502错误码、空响应体。
  • 你控制台打印的401响应是错误对象序列化后的内容,并未被封装成标准的触发器可识别的返回格式。

修复方案

调整中间件的添加顺序,把自定义业务中间件放在httpErrorHandler之前添加,确保抛出的错误能被错误处理中间件捕获并转换为合法响应:

export const authorizedMiddify = (handler: any) => {
  return middyfy(handler)
    .use(httpHeaderNormalizer())
    // 先添加自定义业务中间件
    .use({
      before: (request, next) => {
          console.log(3)
          throw createError(401, 'Unauthorized');
      }
    })
    // 错误处理中间件放在所有业务中间件最后添加,捕获所有上游抛出的错误
    .use(httpErrorHandler())
};

如果需要返回JSON格式的错误响应,可以给httpErrorHandler添加对应配置:

.use(httpErrorHandler({
  fallbackMessage: 'Internal Server Error',
  // 开启后会自动将错误响应转为JSON格式
  serializeError: true
}))

内容的提问来源于stack exchange,提问作者Iliaaaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:24:03