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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:05:04