无法通过Lambda函数连接到MongoDB集群

时间:2019-12-13 12:17:18

标签: python-3.x mongodb amazon-web-services aws-lambda

我有一个在AWS上运行的mongoDB集群,并且MONGO_URI的格式为:

mongodb://<user>:<password>@host1.example.com:27017,host2.example.com:27017/?ssl=true&ssl_ca_certs=<path/to/ca.pem>&replicaSet=<replicaSetName>

由于我的依赖项为ca.pem,因此我创建了lambda layer,因此能够访问/opt/mongo_certs/ca.pem处的文件。 (mongo_certs是我上传的zip文件的名称)。

lambda的代码如下

import datetime
import os

from pymongo import MongoClient

# get the creds from env variables
MONGO_USER = os.environ['MONGO_USER']
MONGO_USER_PASSWORD = os.environ['MONGO_PASSWORD']
MONGO_CERT_PATH = os.environ['MONGO_CERT_PATH']
MONGO_HOSTS = os.environ['MONGO_HOSTS']
MONGO_REPLICA_SET_NAME = os.environ['MONGO_REPLICA_SET_NAME']
MONGO_URI = f'mongodb://{MONGO_USER}:{MONGO_USER_PASSWORD}@{MONGO_HOSTS}/?ssl=true&ssl_ca_certs={MONGO_CERT_PATH}&replicaSet={MONGO_REPLICA_SET_NAME}'

# create a mongoDB connection
MONGO_CLIENT = MongoClient(MONGO_URI)
TEST_COLLECTION_CONN = MONGO_CLIENT['someDB']['someCollection']


def write_to_mongoDB(event, context):
    try:
        data = {
            'createdDate': datetime.datetime.utcnow(),
            'message': 'written from aws lambda'
        }
        response = TEST_COLLECTION_CONN.insert_one(data)
        print('response =====>', response)
        return True
    except Exception as err:
        print(err)
    return False

我测试运行该函数时收到以下错误:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1108)

所以我有几个问题:

  1. 这是通过自签名访问MongoDB的推荐方法吗 证书(明智的做法)
  2. 为什么会出现上述错误,因为我可以从我的群集访问群集 EC2。
  

注意:我的lambda函数与EC2在同一VPC和安全组中运行。

谢谢。

0 个答案:

没有答案