【问题标题】:AWS Lambda and MongoDBAWS Lambda 和 MongoDB
【发布时间】:2020-06-01 14:14:29
【问题描述】:

我是 AWS Lambda 新手,有兴趣尝试一下。我有一个 MongoDB 实例,我想通过我的 AWS lambda 函数连接到该实例。我将如何连接到我的 mongo 实例?我无法将 pymongo 加载到 AWS Lambda 上,那么如何让它在 Lambda 函数中工作?

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

【问题讨论】:

  • 你必须使用pymongo吗?
  • 你能提供更多细节吗?
  • 不,不需要使用pymongo。只是真的想连接而已。我有一个连接到我的数据库的连接字符串,我想将它传递给 Lambda 函数。只是不知道该怎么做。
  • 为什么不能加载pymongo?

标签: mongodb amazon-web-services aws-lambda


【解决方案1】:

您必须使用 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

【讨论】:

    【解决方案2】:

    MongoClient 可用于从 Lambda 连接到 MongoDatabase。

    MongoClientURI mongoClientURI = new MongoClientURI(mongoURl);
    MongoClient mongoClient = new MongoClient(mongoClientURI);
    MongoDatabase db = mongoClient.getDatabase(mongoDB);
    

    【讨论】:

      【解决方案3】:

      首先您需要通过 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
      }
      

      【讨论】:

        【解决方案4】:

        使用 SSH 连接。 'ssh 隧道' npm 模块在那里。安装它并将正确的值传递给它,例如 IP 地址、端口、用户名、带有 PEM 文件的 DB 端口(必须)。它会连接。

        【讨论】:

          【解决方案5】:
          1. 制作一个类似于“venv”的virutalenv,然后在本地系统中运行 pip3 install pymongo
          2. 然后创建一个新文件夹,其中安装了 venv 的所有包(从 venv 复制 --> lib --> python 3.x --> 站点包)
          3. 将您的 lambda python 文件也复制到您拥有 pacakges 的同一文件夹中
          4. 然后压缩文件夹,您会在 aws lambda 函数中看到一个上传 zip 文件,上传并保存
          5. 请注意,您的 lambda 函数 py 文件命名为“lambda_file”,其中的 lambda 函数命名为“lamda_function”,然后更改位于第三列的 aws lambda 中的处理程序信息中的名称
          6. 喜欢这个 lambda_file.lambda_function

          【讨论】:

            猜你喜欢
            • 2018-07-23
            • 2018-11-20
            • 2019-03-14
            • 2023-01-21
            • 2018-02-14
            • 2020-02-27
            • 2021-10-07
            • 2020-09-02
            • 1970-01-01
            相关资源
            最近更新 更多