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

AWS Lambda依赖包导入失败:是否需安装mongodb与aws-sdk?

问题解决说明

1. 关于aws-sdk的问题

你代码里导入了aws-sdk但全程没用到它,直接删掉这行import AWS from 'aws-sdk'就能解决「找不到aws-sdk包」的错误。
补充:当前AWS Lambda的Node.js 18及以上运行时,已不再内置旧版aws-sdk(v2),如果后续需要调用AWS服务,得用新版@aws-sdk/*系列包,部分常用包是内置的,特殊包需要自行打包上传。

2. 关于mongodb的问题

Lambda默认没有内置MongoDB驱动,所以必须安装mongodb包才能正常执行数据库连接逻辑。

操作步骤(针对AWS控制台直接编写的场景)

因为AWS控制台在线编辑器无法直接执行npm install,需要本地打包依赖后上传:

  • 本地新建文件夹,初始化项目:npm init -y
  • 安装mongodb包:npm install mongodb
  • 将删除aws-sdk导入后的代码存入文件夹,命名为index.mjs
  • 把文件夹内所有文件(包括node_modules、index.mjs、package.json等)打包成zip
  • 回到AWS Lambda控制台,上传这个zip包替换原在线代码

代码优化建议

你的代码还有两处可优化的地方,调整后更稳健:

import {MongoClient} from 'mongodb'

export const handler = async (event) => {
  let client;
  try{
    const userData = event.request.userAttributes;

    client = await MongoClient.connect("database url", {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    });
    const db = client.db("Cluster0");
    const collection = db.collection("users");

    await collection.insertOne(userData);
  }catch(error){
    // Async handler直接抛出错误即可,无需callback
    throw error;
  } finally {
    // 无论成功失败都关闭数据库连接
    if(client) await client.close();
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:10:25