我有一个在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)
所以我有几个问题:
注意:我的lambda函数与EC2在同一VPC和安全组中运行。
谢谢。