首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pymongo与DocumentDB集群的连接

Pymongo与DocumentDB集群的连接
EN

Stack Overflow用户
提问于 2022-01-19 11:52:53
回答 3查看 2.2K关注 0票数 0

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

  1. 为了开始实验,我们使用了推荐的AWS教程来创建python:programmatically.html
  2. 由于我们最初希望在本地设置此命令,所以我们使用以下命令对集群进行SSH连接: ssh -i "example.pem“-L -N -v,该命令工作良好,我们能够创建隧道并将本地端口27019连接到集群。关于这一点,一个重要的注意事项是,为了到达集群,我们必须激活VPN网络。
  3. 我们调整了代码以连接到本地端口:
代码语言:javascript
运行
复制
    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())

以错误的形式运行上面的示例:

代码语言:javascript
运行
复制
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, rtt: None, error=CertificateError("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'",)>]>
2022-01-19 11:41:27,120| ERROR   | Could not establish connection from local ('127.0.0.1', 27019) to remote ('ai-docdb-dev.cluster-cq8mixmxuhvt.eu-west-1.docdb.amazonaws.com', 27017) side of the tunnel: open new channel error:

这说明了两点:首先,我们的代码正确地使用了.pem证书,并且能够获得我们的集群名称。其次,代码无法理解localhost是一个地址,并检查本地端口27019以到达集群。

为了克服这个问题,我们还尝试将代码变量主机替换为127.0.01,但是结果是一样的。我们还试图调整pymongo函数MongoClient client.MongoClient的几个参数,但结果保持不变。

谢谢

EN

Stack Overflow用户

发布于 2022-02-17 20:43:42

将&tlsAllowInvalidHostnames=true添加到URI以跳过主机名检查。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70770130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档