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

AWS CDK部署报错:已安装aws-sdk但提示找不到模块

Lambda运行时找不到aws-sdk模块的解决办法

核心原因

AWS Lambda的Node.js运行时自带v2版aws-sdk,但如果你装了v3版(@aws-sdk/*)、本地依赖配置不对,或者CDK打包时没正确处理依赖,就会触发这个报错。

具体解决步骤

1. 如果你用的是v2版aws-sdk:直接删掉本地依赖

Lambda已经内置了v2的aws-sdk,完全不需要手动安装。执行:

npm uninstall aws-sdk

代码里直接导入使用就行,不用额外打包这个模块。

2. 如果你用的是v3版(@aws-sdk/*):确保CDK正确打包依赖

v3是模块化的,Lambda不会内置,必须打包进部署包:

  • 确认package.json里@aws-sdk/*包在dependencies下,不是devDependencies
  • 用NodejsFunction的话,检查CDK配置里没把@aws-sdk/*加入externalModules(这会导致打包时排除它们):
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';

new NodejsFunction(this, 'MyLambda', {
  entry: './src/lambda/index.ts',
  bundling: {
    minify: true,
    sourceMap: true,
    externalModules: [], // 别加@aws-sdk相关的内容
  },
});
  • 要是用普通Function,得手动打包代码(比如npm run build后把node_modules和编译后的代码一起zip),确保@aws-sdk目录在部署包里。

3. 检查CDK打包的排除规则

如果用NodejsFunction,默认会排除Lambda内置模块,但如果误把aws-sdk加到externalModules里,就会导致打包时不包含它。检查你的CDK代码,把externalModules里的'aws-sdk'删掉。

4. 清理缓存重新部署

有时候本地缓存会搞事情,按以下步骤来:

  • 删除node_modules:rm -rf node_modules
  • 删除package-lock.json:rm package-lock.json
  • 重新装依赖:npm install
  • 重新部署:cdk deploy

验证方法

部署完去Lambda控制台的「代码」标签页,查看部署包内容:

  • v2版:包里不该有aws-sdk目录(用的是Lambda内置的)
  • v3版:包里node_modules下必须有@aws-sdk相关目录

用户提供的报错日志:
Runtime.ImportModuleError: Error: Cannot find module 'aws-sdk'
Require stack:

  • /var/task/index.js
  • /var/runtime/index.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:17:24