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

AWS CloudWatch中Serverless(NestJS)部署日志异常排查求助

解决AWS上NestJS Serverless应用CloudWatch请求日志缺失问题

问题现象

部署在AWS的NestJS Serverless应用,仅能在默认aws/lambda/x日志组看到启动阶段日志,后续请求的console.log或Nest日志无输出;自行创建的CloudWatch日志组完全为空。已在函数级别配置CloudWatch Log、API级别配置Logs模块,但均未生效。

当前日志示例:

2023-08-03T09:39:10.945+02:00   INIT_START Runtime Version: nodejs:16.v16 Runtime Version ARN: arn:aws:lambda:eu-west-2::runtime:c1983f4e9ce3930d3093fa38128e12edac2324f4fe99adfb8e0d5fb6b6afadbc

2023-08-03T09:39:34.476+02:00   START RequestId: 41d79246-7bd6-48bf-8eac-f4ab5f65e9c1 Version: $LATEST

2023-08-03T09:39:34.945+02:00   [32m[Nest] 8 - [39m08/03/2023, 7:39:34 AM [32m LOG[39m [38;5;3m[NestFactory] [39m[32mStarting Nest application...[39m

controllers mapped etc...

2023-08-03T09:39:35.607+02:00   [32m[Nest] 8 - [39m08/03/2023, 7:39:35 AM [32m LOG[39m [38;5;3m[NestApplication] [39m[32mNest application successfully started[39m[38;5;3m +22ms[39m

2023-08-03T09:39:35.632+02:00   END RequestId: 41d79246-7bd6-48bf-8eac-f4ab5f65e9c1

2023-08-03T09:39:35.632+02:00   REPORT RequestId: 41d79246-7bd6-48bf-8eac-f4ab5f65e9c1 Duration: 1155.60 ms Billed Duration: 1156 ms Memory Size: 1024 MB Max Memory Used: 192 MB Init Duration: 2183.01 ms

2023-08-03T09:39:37.100+02:00   START RequestId: 8de822b4-a562-46cd-8f45-68d58df9bcc6 Version: $LATEST

2023-08-03T09:39:37.106+02:00   END RequestId: 8de822b4-a562-46cd-8f45-68d58df9bcc6

2023-08-03T09:39:37.106+02:00   REPORT RequestId: 8de822b4-a562-46cd-8f45-68d58df9bcc6 Duration: 5.27 ms Billed Duration: 6 ms Memory Size: 1024 MB Max Memory Used: 193 MB

2023-08-03T09:39:39.005+02:00   START RequestId: 4d6c8e4f-b840-4200-a1e4-b7a087f36cad Version: $LATEST

2023-08-03T09:39:39.010+02:00   END RequestId: 4d6c8e4f-b840-4200-a1e4-b7a087f36cad

2023-08-03T09:39:39.010+02:00   REPORT RequestId: 4d6c8e4f-b840-4200-a1e4-b7a087f36cad Duration: 5.00 ms Billed Duration: 5 ms Memory Size: 1024 MB Max Memory Used: 193 MB

2023-08-03T09:44:02.337+02:00   START RequestId: c5028e01-8a5f-4bc5-97dc-d99231b4bee5 Version: $LATEST

2023-08-03T09:44:02.357+02:00   END RequestId: c5028e01-8a5f-4bc5-97dc-d99231b4bee5

排查与解决步骤

1. 确认Lambda函数执行角色权限

Lambda需要具备向CloudWatch Logs写入日志的权限,检查执行角色是否包含CloudWatchLogsFullAccess或自定义权限策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}

如果权限不足,添加对应策略后重新部署函数。

2. 适配NestJS日志到Serverless环境

Nest默认日志在Serverless环境下可能存在缓冲问题,需确保日志直接输出到stdout/stderr:

  • 禁用日志颜色:生产环境关闭颜色输出,避免控制字符干扰日志解析,在main.ts中配置:
    const app = await NestFactory.create(AppModule, {
      logger: ['log', 'error', 'warn', 'debug', 'verbose'],
      loggerOptions: {
        disableColors: true,
      },
    });
    
  • 使用console.log时,确保异步操作已完成再返回响应,避免Lambda提前终止导致日志未输出。

3. 验证API Gateway集成配置

如果通过API Gateway触发Lambda,需确认:

  • 开启API Gateway日志:进入API的阶段设置,开启“CloudWatch日志”,选择日志级别为INFO或ERROR,并确保关联IAM角色有CloudWatch写入权限。
  • 检查代理集成格式:确保Lambda返回的响应符合API Gateway要求,避免因响应错误导致日志未触发。

4. 核对Lambda日志配置

  • 在Lambda控制台,查看配置 -> 监控和操作工具,确认“CloudWatch Logs”已启用,日志组名称匹配(默认是aws/lambda/[函数名])。
  • 若使用自定义日志组,需在Lambda日志配置中指定该组,同时确保执行角色有写入该组的权限。

5. 确保异步操作执行完成

Lambda会在处理函数执行完成后立即终止,若请求处理包含异步逻辑(如数据库查询、HTTP请求),必须等待所有异步操作完成再返回:

@Get()
async getHello() {
  console.log('处理请求中...');
  // 等待异步操作完成
  const data = await this.someService.fetchData();
  console.log('请求处理完成,数据:', data);
  return data;
}

6. 检查自定义日志组权限

自行创建的日志组需添加权限允许Lambda写入,修改日志组的权限策略(替换[Lambda角色ARN]和[自定义日志组名]):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "[Lambda角色ARN]"
      },
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:[区域]:[账号ID]:log-group:[自定义日志组名]:*"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:40:58