从本地主机连接 MongoDB

问题描述 投票:0回答:1

我有一个 EC2 实例 (

EC2_VM
),我可以从
连接 mongodb (
MONGO_HOST

)
with sshtunnel.open_tunnel(
    (EC2_VM, 22),
    ssh_username="ec2-user",
    ssh_pkey=EC2_KEY,
    remote_bind_address=(MONGO_HOST, 27017),
    local_bind_address=("0.0.0.0", 27017),
) as tunnel:
    print(tunnel.local_bind_port)    

    # list database names
    client = MongoClient(
        "mongodb://%s:%s@%s" % (MONGO_USER, MONGO_PASSWORD, "127.0.0.1"),
        port=tunnel.local_bind_port,
    )
    names = client.list_database_names()
    print(names)

但是我遇到了以下错误。知道这里出了什么问题吗?看起来它已经正确设置了隧道,但似乎仍然无法到达 mongo。 TIA

  File "/lib/python3.11/site-packages/pymongo/topology.py", line 269, in _select_servers_loop
    raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: 127.0.0.1:27017: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 6530a0a24577402c25f1997e, topology_type: Unknown, servers: [<ServerDescription ('127.0.0.1', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('127.0.0.1:27017: timed out')>]>

任何在 aws 中设置了 docdb 的人,你们如何从本地主机连接到它?它可以与 MongoDB Compass 一起使用,因为它提供了 GUI 中的 ssh 隧道选项,但是当我尝试使用 pymongo 通过脚本执行此操作时,它不起作用

蒂亚

python pymongo ssh-tunnel aws-documentdb
1个回答
0
投票

通过将

directConnection=True
提供给
MongoClient

解决了这个问题
© www.soinside.com 2019 - 2024. All rights reserved.