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

Lambda随机触发Internal Server Error,本地正常CloudWatch无日志求助

排查Lambda随机500错误的步骤及修复建议

一、先补全错误日志,定位根本原因

目前CloudWatch看不到错误日志,大概率是未在catch块中记录错误详情。修改catch分支,强制输出错误日志:

} catch (error: any) {
    console.error('Lambda执行错误:', error); // 新增这行,确保错误被记录到CloudWatch
    if (error instanceof ValidationErrorArray) {
        // ... 原有逻辑
    } else {
        // ... 原有逻辑
    }
}

部署后再测试,查看CloudWatch的日志流,就能看到具体的错误信息,这是定位问题的关键。

二、修复代码中的潜在问题

1. 避免重复解析请求体

代码中两次调用JSON.parse(event.body),虽一般不会出错,但可能因请求体的特殊处理(如API Gateway的编码问题)导致偶发异常,改成解析一次:

// 原有代码
const assetData = JSON.parse(event.body)
const asset = plainToInstance(AssetAdditionValidation, assetData)
// ...
const {
    organizationId,
    assetType,
    assetTag,
    manufacturer,
    model,
    serialNumber,
    operatingSystem,
} = JSON.parse(event.body) // 重复解析,改为:
} = assetData

2. 处理请求体为空的边界情况

当前判断event.body === null,但API Gateway可能将空请求体转为空字符串(而非null),此时JSON.parse('')会抛出错误,导致500。修改判断逻辑:

if (!event.body) { // 匹配null、空字符串、undefined
    throw new Error('Missing body')
}

3. 避免序列化循环引用

如果createAsset返回的newAsset是数据库实体(如TypeORM实体),可能包含循环引用(如关联关系),导致JSON.stringify偶发失败。使用class-transformer的classToPlain处理实体后再序列化:

import { classToPlain } from 'class-transformer';
// ...
return {
    statusCode: 200,
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ asset: classToPlain(newAsset) }),
}

三、排查外部依赖问题

1. 数据库层偶发故障

本地测试正常但线上失败,大概率是数据库(如RDS)的问题:

  • 检查RDS的连接池配置,是否因连接耗尽导致偶发无法获取连接
  • 查看RDS的性能指标(CPU、内存、磁盘IO),是否存在锁竞争或超时
  • 检查createAsset函数的实现,确保所有异步操作都用await,且错误能被上层try/catch捕获

2. Lambda资源配置不足

尝试调高Lambda的内存(如从128MB提升至256MB),内存提升会同时提升CPU性能,减少因资源不足导致的偶发崩溃;同时将Lambda超时时间设置为API Gateway的超时时间(最大30秒),避免因执行时间过长被强制终止。

四、API Gateway配置检查

查看API Gateway的日志设置,开启全量日志记录,确认是否有请求在API Gateway层面被拦截或处理异常;同时检查API Gateway的集成请求配置,确保请求体的传递方式(如Passthrough设置)正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:23:10