Mongoose DocumentDB 连接通过 SSH 隧道失败
Mongoose DocumentDB connection fails through SSH tunnel
我正在尝试使用 Node.js/Typescript 和 Mongoose 连接到 AWS DocumentDB。我有一个 EC2 实例设置为 SSL 隧道,效果很好。我可以使用 Studio3T 和 mongo-cli 在本地连接到 DocumentDB。
此命令有效 mongo --sslAllowInvalidHostnames --ssl --sslCAFile rds-combined-ca-bundle.pem --username <username> --password <password>
但是如果我尝试使用 Mongoose 连接到同一个数据库,它会失败。这是我的代码和错误:
const options = {
dbName: 'prodDB',
user: connectionData.username,
pass: connectionData.password,
tls: true,
tlsCAFile: '../rds-combined-ca-bundle.pem',
tlsAllowInvalidHostNames: true,
};
try {
await connect('mongodb://localhost:27017', options);
} catch (error) {
console.log(error);
}
MongooseServerSelectionError: connect EHOSTUNREACH imagine-ip-address-here:27017
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
servers: Map(1) {
'censored:27017' => [ServerDescription]
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: 'rs0',
commonWireVersion: 7,
logicalSessionTimeoutMinutes: undefined
}
至此,我已经尝试了 Mongoose 中几乎所有可能的配置,但我感到很绝望。感谢任何帮助
这似乎是 mongoose 版本 >= 6 的问题。
将 Mongoose 降级到版本 5.13.8 没有问题。
猫鼬开发者显然意识到了这个问题:https://github.com/Automattic/mongoose/issues/11105
我正在尝试使用 Node.js/Typescript 和 Mongoose 连接到 AWS DocumentDB。我有一个 EC2 实例设置为 SSL 隧道,效果很好。我可以使用 Studio3T 和 mongo-cli 在本地连接到 DocumentDB。
此命令有效 mongo --sslAllowInvalidHostnames --ssl --sslCAFile rds-combined-ca-bundle.pem --username <username> --password <password>
但是如果我尝试使用 Mongoose 连接到同一个数据库,它会失败。这是我的代码和错误:
const options = {
dbName: 'prodDB',
user: connectionData.username,
pass: connectionData.password,
tls: true,
tlsCAFile: '../rds-combined-ca-bundle.pem',
tlsAllowInvalidHostNames: true,
};
try {
await connect('mongodb://localhost:27017', options);
} catch (error) {
console.log(error);
}
MongooseServerSelectionError: connect EHOSTUNREACH imagine-ip-address-here:27017
reason: TopologyDescription {
type: 'ReplicaSetNoPrimary',
servers: Map(1) {
'censored:27017' => [ServerDescription]
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: 'rs0',
commonWireVersion: 7,
logicalSessionTimeoutMinutes: undefined
}
至此,我已经尝试了 Mongoose 中几乎所有可能的配置,但我感到很绝望。感谢任何帮助
这似乎是 mongoose 版本 >= 6 的问题。 将 Mongoose 降级到版本 5.13.8 没有问题。 猫鼬开发者显然意识到了这个问题:https://github.com/Automattic/mongoose/issues/11105