小编ruh*_*ufu的帖子

Pymongo 连接到 DocumentDB 集群

为了以编程方式将 python 连接到本地环境中的 AWS DocumentDB(AWS 版本的 MongoDB)实例,我遇到了一些问题。我们尝试了以下步骤:

  1. 为了开始我们的实验,我们使用推荐的 AWS 教程来创建 python 连接: https: //docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html。

  2. 由于我们希望最初在本地进行设置,因此我们使用以下命令与集群建立 SSH 连接: ssh -i "example.pem" -L 27019:docdb.cluster-XXXXXXX.region.docdb.amazonaws.com:27017 ec2 -user@ec2-XXX-XXX-XXX-XXX.region.compute.amazonaws.com -N -v 此命令运行良好,我们能够创建隧道并将本地端口 27019 连接到我们的集群。与此相关的一个重要注意事项是,为了到达集群,我们必须激活 VPN 网络。

  3. 我们调整了代码以连接到本地端口:

    from pymongo import MongoClient,ReadPreference
    import urllib
    import ssl
    
    username=urllib.parse.quote_plus("username")
    password=urllib.parse.quote_plus("password")
    port=27019
    host="localhost"
    dbName="general"
    
    
    dbUri = f'mongodb://{username}:{password}@{host}:{port}/?tls=true&tlsCAFile=./rds-combined-ca-bundle.pem&retryWrites=false'
    print(dbUri)
    
    client = MongoClient(dbUri)
    print(client.list_database_names())
Run Code Online (Sandbox Code Playgroud)

运行上面的例子我们得到错误:

pymongo.errors.ServerSelectionTimeoutError: hostname '127.0.0.1' doesn't match either of 'docdb.XXXXXXX.region.docdb.amazonaws.com', 'docdb.cluster-XXXXXXX.region.docdb.amazonaws.com', 'docdb.cluster-ro-XXXXXXX.region.docdb.amazonaws.com', Timeout: 30s, Topology Description: <TopologyDescription id: 61e7f8c811a815088e97e5a7, topology_type: Unknown, servers: [<ServerDescription ('127.0.0.1', 27019) server_type: Unknown, …
Run Code Online (Sandbox Code Playgroud)

python mongodb amazon-web-services pymongo aws-documentdb

1
推荐指数
1
解决办法
5727
查看次数