Saj*_*ain 4 javascript mongodb amazon-web-services node.js aws-lambda
我正在 aws 上编写 lambda 函数。我想在用户注册到我的 mongodb 数据库后发送用户数据。我使用“预验证”方法触发了 lambda 函数。但是,“我收到此错误”预身份验证失败,错误为找不到从 /var/task/index.mjs 导入的包“aws-sdk”。”
我的 lambda 函数代码:
import AWS from 'aws-sdk'
import {MongoClient} from 'mongodb'
exports.handler = async (event) => {
try{
// Retrieve the user data from the event object
const userData = event.request.userAttributes;
// Connect to the MongoDB database
const client = await MongoClient.connect("database url", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const db = client.db("Cluster0");
const collection = db.collection("users");
// Insert the user data into the collection
await collection.insertOne(userData);
// Close the database connection
client.close();
}catch(error){
callback(error, event)
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是我是否必须在 lambda 函数文件夹上安装 mongodb 和 aws sdk?我正在从 aws 网站编写 lambda 函数。
找不到从 /var/task/index.mjs 导入的包“aws-sdk”
此错误通常是由于在使用 SDK V3 的 Lambda 运行时时使用 SDK V2 导入语句导致的。
我猜您正在 Lambda 上使用新的节点运行时 18。该运行时使用 Node SDK V3,它支持模块化导入,如下所示:
const { S3Client } = require("@aws-sdk/client-s3");
您可以更改为较低的运行时间或更改代码以适应 Node V3 SDK 导入:
https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/#modularized-packages
我也不相信 Lambda 运行时内置了 MongoDB 客户端,这意味着您需要在本地创建包或使用Lambda Layer
https://www.mongodb.com/developer/products/atlas/serverless-development-lambda-atlas/
如果您不受 MongoDB 的束缚,您可以使用 DynamoDB,它具有用于 Lambda 运行时的内置客户端。
| 归档时间: |
|
| 查看次数: |
4409 次 |
| 最近记录: |