通过AWS Lambda函数连接AWS Document DB时的ServerSelectionTimeoutError



我一直在尝试通过用AWS Lambda函数编写的python脚本连接到AWS文档数据库。

代码是:

def lambda_handler(event, context):
create_mongo_connection()
def create_mongo_connection():
try :   
conn = pymongo.MongoClient('mongodb://<username>:<password>@test-document-db-exportify.cluster-c9puxz9rzs0a.ap-south-1.docdb.amazonaws.com:27017/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = conn['exportifydb']
docs = db['constants'].find({})
for doc in docs:
print(doc)
except Exception as e:
print(e)

然而,它引发:

raise ServerSelectionTimeoutError(                                                                                                                                  
pymongo.errors.ServerSelectionTimeoutError: test-document-db-exportify.cluster- 
c9puxz9rzs0a.ap-south-1.docdb.amazonaws.com:27017: timed out, Timeout: 30s, Topology 
Description: <TopologyDescription id: 611f576267e03bfd2fcb0b3c, topology_type: 
ReplicaSetNoPrimary, servers: [<ServerDescription ('test-document-db-exportify.cluster- 
c9puxz9rzs0a.ap-south-1.docdb.amazonaws.com', 27017) server_type: Unknown, rtt: None, 
error=NetworkTimeout('test-document-db-exportify.cluster-c9puxz9rzs0a.ap-south- 
1.docdb.amazonaws.com:27017: timed out')>]> 

但是,我可以连接到相同的数据库,并使用shell和Robo3T访问查询结果

检查是否在DocumentDB设置中的集群参数组上启用了TLS。我看到您正在传入ssl true,并确保您的证书正在使用集群上配置的证书进行身份验证。希望这能解决问题。

最新更新