AWS Lambda Node.js 18环境中导入aws-sdk报错求助
Node.js 18 Lambda中aws-sdk导入错误的解决方法
问题根源
Node.js 18及更高版本的Lambda运行时不再预装AWS SDK v2(也就是aws-sdk这个包),取而代之的是预装了模块化的AWS SDK v3,所以直接导入aws-sdk会提示找不到包。
推荐解决方法(无需额外打包,直接用)
改用AWS SDK v3的@aws-sdk/client-lambda模块来调用其他Lambda,修改代码如下:
// 替换原来的import语句 import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda"; export const handler = async (event) => { // 初始化Lambda客户端,替换成你的Lambda所在区域 const lambdaClient = new LambdaClient({ region: "us-east-1" }); try { // 构造调用命令,填入目标Lambda的ARN和需要传递的参数 const invokeCommand = new InvokeCommand({ FunctionName: "你的目标Lambda ARN", Payload: JSON.stringify({ /* 这里放要传给目标Lambda的参数 */ }) }); // 调用目标Lambda const response = await lambdaClient.send(invokeCommand); // 解析返回的Payload(默认是Buffer类型) const result = JSON.parse(Buffer.from(response.Payload).toString()); // 后续业务逻辑... return { statusCode: 200, body: JSON.stringify(result) }; } catch (err) { return { statusCode: 500, body: JSON.stringify({ error: err.message }) }; } };
备选方案(非要用AWS SDK v2的话)
如果一定要用旧版的aws-sdk,需要自己打包依赖:
- 本地新建项目,执行
npm install aws-sdk - 把
node_modules文件夹和你的index.mjs一起打包成zip - 上传这个zip到Lambda控制台替换原有代码
内容的提问来源于stack exchange,提问作者mattBurnett
相关产品推荐
相关产品推荐

