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

AWS Lambda与DynamoDB API无法正常运行求助

排查与调整步骤

1. 先看Lambda的CloudWatch日志

内部服务器错误的核心排查点是Lambda的执行日志,里面会有具体报错信息:

  • 登录AWS控制台,打开Lambda服务,找到你的函数,切换到「监控」标签,点击「查看CloudWatch日志」
  • 找最近的执行记录,定位ERROR级别的日志,比如权限不足、表名写错、JSON解析失败等具体问题

2. 检查Lambda角色的DynamoDB权限

Lambda必须有权限访问DynamoDB,确认执行角色的权限配置:

  • 进入Lambda函数的「配置」→「权限」→「执行角色」,点击角色名称跳转到IAM控制台
  • 确保角色附加了包含DynamoDB操作的策略:测试阶段可以用AmazonDynamoDBFullAccess,生产环境建议用精细权限,至少要包含dynamodb:GetItem、dynamodb:Scan、dynamodb:PutItem、dynamodb:DeleteItem,且资源指向你的表arn:aws:dynamodb:你的区域:账号ID:table/http-crud-tutorial-items

3. 核对DynamoDB表的基本信息

  • 确认表名http-crud-tutorial-items在当前AWS区域存在,且主键是字符串类型的id
  • 检查Lambda部署的区域和DynamoDB表所在区域一致,跨区域访问会直接报错

4. 匹配Lambda运行时与SDK版本

官方文档的代码用的是AWS SDK v2,要注意Lambda运行时:

  • 如果选的是Node.js 18+,默认SDK是v3,代码会不兼容,要么降级到Node.js 16.x,要么修改代码适配v3,或者给Lambda添加v2 SDK的层

5. 检查API Gateway的路由配置

  • 确认HTTP API的路由routeKey和代码里switch分支完全一致,比如PUT /items、GET /items/{id},大小写、路径不能有偏差
  • 确认API Gateway和Lambda的集成是「Lambda代理集成」,且选择的Lambda函数正确

6. 代码层面的优化与修复

(1)区分错误类型

当前代码把所有异常都返回400,但内部服务器错误(500)可能是服务器端问题,修改catch块:

catch (err) {
  statusCode = ['ValidationException', 'ResourceNotFoundException'].includes(err.name) ? 400 : 500;
  body = err.message;
}

这样能明确区分客户端错误和服务器错误,方便排查

(2)容错JSON解析

PUT请求时如果event.body为空或格式错误会抛异常,添加容错逻辑:

case "PUT /items":
  let requestJSON = {};
  if (event.body) {
    try {
      requestJSON = JSON.parse(event.body);
    } catch (parseErr) {
      throw new Error('请求体不是合法JSON');
    }
  }
  // 后续put逻辑不变

(3)确认routeKey传递正常

某些配置下routeKey可能没正确传递,在代码开头加日志验证:

console.log('收到的事件:', JSON.stringify(event));

查看日志里有没有routeKey字段,没有的话检查API Gateway是否启用了代理模式

7. 直接测试Lambda函数

在Lambda控制台的「测试」标签,手动构造测试事件模拟API请求,比如测试GET /items:

{
  "routeKey": "GET /items",
  "pathParameters": null,
  "body": null
}

如果直接执行Lambda也报错,说明问题出在Lambda或DynamoDB,和API Gateway无关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:01:12