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

NodeJS AWS Lambda函数报错:Cannot find module 'aws-sdk' 求助

解决AWS Lambda中找不到aws-sdk模块的问题

核心原因

你的Lambda运行时版本大概率是Node.js 18.x或更高版本——从Node.js 18.x开始,AWS Lambda不再预安装AWS SDK v2(即aws-sdk包),转而默认提供AWS SDK v3(@aws-sdk/*系列包),这就是报错的根本原因。官方文档中提到的“运行时始终可用”针对的是对应版本适配的SDK版本,并非所有SDK版本都预安装。

解决方案(三选一)

1. 切换到Node.js 16.x或更低版本运行时

Node.js 16.x及以下版本的Lambda运行时仍预安装了AWS SDK v2,无需修改代码,只需在CDK配置中指定对应运行时:

// 示例CDK代码(TypeScript)
import { NodejsFunction, Runtime } from 'aws-cdk-lib/aws-lambda-nodejs';

new NodejsFunction(this, 'MyLambda', {
  runtime: Runtime.NODEJS_16_X, // 指定16.x版本
  // 其他配置...
});

重新执行cdk deploy即可。

2. 迁移到AWS SDK v3

AWS SDK v3是官方推荐的新版本,体积更小、支持树摇,适配Node.js 18+运行时。修改你的代码如下:

import { S3Client, ListObjectsCommand } from "@aws-sdk/client-s3";

const s3Client = new S3Client({});
const command = new ListObjectsCommand({ Bucket: process.env.DOCUMENTS_BUCKET_NAME! });
const response = await s3Client.send(command);
const results = response.Contents;

同时在项目的package.json中添加依赖:

npm install @aws-sdk/client-s3

CDK的NodejsFunction会自动打包该依赖到部署包中,重新部署即可。

3. 手动打包AWS SDK v2到部署包

如果坚持使用AWS SDK v2,需要将其作为项目依赖安装并打包:

  1. 安装依赖:
npm install aws-sdk
  1. 确保CDK配置中包含该依赖。使用NodejsFunction时默认会打包所有生产依赖,无需额外配置;如果是自定义打包方式,需确保aws-sdk被包含在node_modules中并一起上传。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:15:59