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

AWS SAM构建Lambda时无法导入@aws-sdk/lib-dynamodb包的问题求助

问题:AWS SAM构建TypeScript Lambda时无法解析@aws-sdk/lib-dynamodb

问题背景

用AWS SAM初始化了TypeScript版Hello World Lambda项目,部署到API Gateway流程正常。修改代码实现DynamoDB读写时,添加了如下导入语句:

import { PutCommand } from "@aws-sdk/lib-dynamodb";

执行sam build命令时触发构建错误:

Build Failed
Error: NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild Failed: ✘ [ERROR] Could not resolve "@aws-sdk/lib-dynamodb"

    app.ts:5:27:
      5 │ import { PutCommand } from "@aws-sdk/lib-dynamodb";
        ╵                            ~~~~~~~~~~~~~~~~~~~~~~~

查看SAM自动生成的package.json,仅包含开发依赖;执行npm i @aws-sdk/lib-dynamodb后重新构建,错误依旧。

原因分析

  1. 依赖未被正确记录到package.json:SAM构建时会基于package.json重新安装依赖,而非直接使用本地node_modules。若依赖未写入package.json的dependencies字段,构建过程会找不到对应包。
  2. 缺少底层核心依赖:@aws-sdk/lib-dynamodb是高层封装组件,必须配合底层的@aws-sdk/client-dynamodb使用,单独安装前者会导致解析失败。

修复步骤

1. 安装完整依赖并写入package.json

执行以下命令,同时安装两个必要依赖并确保它们被添加到生产依赖中:

npm install @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb --save

2. 验证package.json更新

检查package.json,确认两个包出现在dependencies字段中(版本号以实际安装为准):

{
  "name": "my-lambda",
  "version": "1.0.0",
  // ... 其他原有字段
  "dependencies": {
    "@aws-sdk/client-dynamodb": "^3.400.0",
    "@aws-sdk/lib-dynamodb": "^3.400.0"
  },
  "devDependencies": {
    // ... 原有开发依赖
  }
}

3. 清理构建缓存并重新构建

SAM会缓存构建产物,清理后重新构建确保加载新依赖:

rm -rf .aws-sam/
sam build

额外说明

  • @aws-sdk/lib-dynamodb提供了Document Client风格的API,自动处理JSON与DynamoDB数据格式的转换,简化读写操作。
  • SAM的Nodejs构建器通过Esbuild打包所有依赖,确保最终的Lambda部署包包含所需的SDK代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:35:25