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

AWS Lambda引入aws-sdk模块报错:找不到模块问题求助

解决Lambda Node.js 18.x中aws-sdk模块找不到及index.mjs引用问题

问题根源

  1. Node.js 18.x的Lambda默认采用ES模块(.mjs)规范,你将文件重命名为.js后,若未同步调整模块配置,运行时仍可能按ES模块逻辑处理,导致依赖加载异常。
  2. Node.js 18及以上版本的Lambda不再预装AWS SDK v2(即aws-sdk包),仅内置AWS SDK v3,直接用require('aws-sdk')会触发模块找不到的错误。
  3. 日志中出现/var/runtime/index.mjs,大概率是旧的.mjs文件仍存在于部署包中,或Lambda处理程序配置未更新。

具体解决步骤

1. 修正Lambda处理程序与模块配置

  • 进入Lambda函数的配置页面,找到「运行时设置」并点击编辑。
  • 将「处理程序」设置为index.handler(确保指向你的.js文件及导出的处理函数)。
  • 在Lambda的在线IDE中,创建package.json文件,添加以下内容以明确使用CommonJS模块规范:
{
  "type": "commonjs"
}

2. 解决aws-sdk模块缺失问题

方案一:改用内置的AWS SDK v3(推荐)

AWS SDK v3已预装在Node.js 18.x的Lambda环境中,无需额外安装,直接按模块化方式引用。例如调用S3服务:

const { S3Client, ListBucketsCommand } = require("@aws-sdk/client-s3");

exports.handler = async (event) => {
  const s3Client = new S3Client({ region: "你的区域" });
  const response = await s3Client.send(new ListBucketsCommand({}));
  return {
    statusCode: 200,
    body: JSON.stringify(response)
  };
};

方案二:打包AWS SDK v2到部署包

若必须使用AWS SDK v2,需手动将依赖打包进部署包:

  • 在在线IDE的package.json中添加依赖:
{
  "type": "commonjs",
  "dependencies": {
    "aws-sdk": "^2.1400.0"
  }
}
  • 运行npm install安装依赖,然后重新部署Lambda函数。

3. 清理旧部署文件

  • 检查在线IDE的文件列表,确认是否存在残留的index.mjs文件,若有则删除。
  • 重新部署Lambda函数,确保部署包中仅包含index.js、package.json及node_modules(若用方案二)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:45:34