我有一个 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 通过脚本执行此操作时,它不起作用
蒂亚
通过将
directConnection=True
提供给 MongoClient
解决了这个问题