AWS Lambda 和 MongoDB

6

我是AWS Lambda的新手,对它很感兴趣。我有一个MongoDB实例,想通过我的AWS lambda函数连接到它。我该如何连接到我的mongo实例?由于无法将pymongo加载到AWS Lambda中,因此我该如何在Lambda函数中使其工作?

client = MongoClient()
client = MongoClient("mongodb://xxxxxx:27017 username user --password")

你必须使用pymongo吗? - error2007s
你能提供更多细节吗? - error2007s
不,不需要使用pymongo。我只是想连接数据库而已。我有一个连接字符串要传递给Lambda函数。只是不确定如何实现。 - Yolo49
为什么无法加载pymongo? - Noel Llevares
5个回答

3
你需要使用Pymongo,可以使用 pip install pymongo -t <your_location> 进行下载,接着将其与代码和所有依赖项一起压缩,然后上传到Lambda控制台。
import pymongo
name = "db_username"
password = "db_password"
db_name = "db_name"
db_host  = "db_host"
mongo_link = "mongodb://"+name+":"+password+"@"+db_host+"/"+db_name
def handler(event, context):
    client = pymongo.MongoClient(mongo_link)
    # Get the sampleDB database
    db = client.sampleDB

1
MongoClient可以用于从Lambda连接到MongoDatabase。
MongoClientURI mongoClientURI = new MongoClientURI(mongoURl);
MongoClient mongoClient = new MongoClient(mongoClientURI);
MongoDatabase db = mongoClient.getDatabase(mongoDB);

0
  1. 在本地系统中创建一个名为“venv”的虚拟环境,并运行pip3 install pymongo
  2. 然后创建一个新文件夹,其中包含venv安装的所有软件包(从venv --> lib --> python 3.x --> site packages复制)
  3. 将lambda Python文件也复制到与软件包相同的文件夹中
  4. 然后压缩文件夹,您会看到一个上传zip文件在aws lambda函数中,请上传并保存
  5. 请注意,您的lambda函数py文件名为“lambda_file”,其中的lambda函数名为“lamda_function”,然后在第三列中的aws lambda处理程序信息中更改名称
  6. 像这样:lambda_file.lambda_function

0

使用SSH连接。有一个名为“ssh tunnel”的npm模块。安装它并将正确的值传递给它,例如IP地址、端口、用户名、带有PEM文件(必须)的DB端口。它会建立连接。


0

首先,您需要通过SSH连接,然后它将在您的AWS Lambda和Mongodb实例之间建立连接

如果您的Mongodb托管在EC2实例中,则可以通过此方式传递

let dbDetails ={
    username:'', //Ubuntu or ec2-user
    dstHost:'localhost',
    host:'',  //IP Address of your instance
    dstPort:27017,
    privateKey:fs.readFileSync(''), //your pem file
    port:22
}

所以,在这之后,您需要使用像SSH隧道这样的SSH客户端

   let server = tunnel(config, function (error, server) {
                   //handle error
        }

  {
                   //success message
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接