AWS最近启动了类似于MongoDB接口的新服务DocumentDB。
AWS DynamoDB服务与DocumentDB服务之间有什么区别?
AWS 文档指出,要连接到我的 DocumentDB 集群,我需要使用以 so 结尾的查询字符串?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0。这是我的客户应该验证的根证书链。我不应该需要客户证书。
使用 MongoDB C# 驱动程序和此特定查询,.pem文件位于同一目录中,我无法建立连接。如果我使用.pem来自 Mongo Shell的相同文件和查询字符串,我可以正确连接到我的数据库。它仅在我的 .net 核心应用程序中不起作用,该应用程序也在 AWS 上运行。
通过从集群中删除 TLS 并ssl_ca_certs从查询中删除选项,我可以正确连接到我的集群。
我以为我可以将我的.pem文件转换为.pfxusing openssl,但我必须提供.pfx密码并且MongoDB 文档指出
加载带有密码的证书时,PrivateKey 属性必须不为空。如果该属性为空,则表示您的证书不包含私钥,不会传递给服务器。
如何使用Amazon AWS 提供的.pem文件通过C# MongoDB 驱动程序连接到我的数据库?
ssl mongodb amazon-web-services asp.net-core aws-documentdb-mongoapi
我有一个使用TLS的AWS DocumentDB集群。我想从我的连接到它.net core的应用程序中C#使用C# MongoDB Driver。
AWS提供的连接字符串包括这一部分?ssl_ca_certs=rds-combined-ca-bundle.pem,这是Amazon提供的证书链。我可以使用此证书通过MongoDB Shell正确连接到数据库。
我的问题是MongoDB C# Driver不支持.pem文件。似乎仅支持.pfx文件。我尝试转换.pem,但缺少私钥。我可以通过生成.cer所需.pfx的.pem,但不能生成私钥。即使这样,这种解决方案似乎还是粗略的和非正式的。
是否有一种简单的方法通过MongoDB C#驱动程序使用SSL连接到DocumentDB?如果是,我应该使用什么解决方案?
我想将Mac笔记本电脑中的Robo 3T(以前称为robomongo)与AWS的DocumentDB连接起来。我遵循了许多教程,但是找不到特定于DocumentDB的任何教程。
在测试阶段,它会通过步骤1“连接到我的EC2实例”,但是在步骤2失败,并显示消息“无法通过SSH隧道连接到... docdb.amazonaws.com:27017”。有人能使它正常工作吗?
我正在设置一个微服务,该服务需要对Amazon DocumentDB的更改做出反应。在使用MongoDB时,我将为此使用响应式变更流。如果使用DocumentDB进行此操作,则在注册更改侦听器时会收到异常消息,说明当前不支持更改流。
2019-02-12T11:46:15.513+0100 E QUERY [js] Error: command failed: {
"ok" : 0,
"errmsg" : "The $changeStream stage is currently not supported",
"code" : 303
} : aggregate failed :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:18:14
_assertCommandWorked@src/mongo/shell/assert.js:534:17
assert.commandWorked@src/mongo/shell/assert.js:618:16
DB.prototype._runAggregate@src/mongo/shell/db.js:260:9
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1062:12
DBCollection.prototype.watch@src/mongo/shell/collection.js:1589:12
@(shell):1:1
Run Code Online (Sandbox Code Playgroud)
对于“旧式”解决方案(op-log-tailing),我没有发现有关如何实现这一点的任何提示。
建议使用什么设置在Amazon DocumentDB上注册数据库更改?
我在 AWS Elastic Beanstalk (EB) 中有 2 个环境,运行 Node.js 应用程序,使用 Mongoose 框架连接到 DocumentDB。其中一个环境莫名其妙地停止工作,而另一个环境工作正常。两者都是从 CI/CD 构建服务器部署的,该服务器使用 EB CLI 来部署应用程序代码。
有问题的环境在nodejs.log中产生如下错误:
name: 'MongooseTimeoutError',
reason:
{ Error: unable to get local issuer certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1058:34)
at TLSSocket.emit (events.js:198:13)
at TLSSocket._finishInit (_tls_wrap.js:636:8)
name: 'MongoNetworkError',
[Symbol(mongoErrorContextSymbol)]: {} },
[Symbol(mongoErrorContextSymbol)]: {} }
Run Code Online (Sandbox Code Playgroud)
两者都使用相同的连接字符串,因为它们连接到同一个实例 mongodb://*****:*****@docdb-2019-08-**-**-**-**.cluster-**********.us-east-2.docdb.amazonaws.com:27017/db_name?ssl=true&ssl_ca_certs=/etc/ssl/certs/rds-combined-ca-bundle.pem&replicaSet=rs0
证书 pem 文件是用于两者的相同文件,并通过 EB .ebextensions 脚本部署到实例。
我尝试过的事情:
目前有点卡住了想法。
mongoose node.js amazon-elastic-beanstalk aws-documentdb-mongoapi aws-documentdb
我正在将 MongoDB 中的数据库移动到 AWS DocumentDB。我正在 Java 中使用mongodb-driver(版本 3.6.4)来写入和读取数据,以及配置我使用的集合。特别是,我有一个架构验证(编写为 JSON 架构),它似乎与 AWS DocumentDB 不兼容。
这里的文档说不$jsonSchema支持,但我一般没有看到任何关于文档验证的明确断言。
真的不支持吗?有没有其他选择(除了在Java代码中这样做)?
有什么方法可以在不使用 DocumentDb 的情况下将 AWS OpenSearch 与 MongoDB 连接起来?我有一个基于 Nest.js 和 ReactJs 的应用程序,我想在其中使用 OpenSearch 服务
mongodb amazon-web-services aws-elasticsearch nestjs aws-documentdb-mongoapi
我最近尝试在Spring应用程序中将新的AWS DocumentDB服务用作数据库。
群集已在与我在其上部署应用程序的EKS相同的VPC中创建。安全组允许VPC中所有节点之间的连接。
AWS为我的数据库集群公开了这样的mongo URI:
mongodb://<my-user>:<insertYourPassword>@<my-cluster-endpoint>:27017/?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0
Run Code Online (Sandbox Code Playgroud)
我的问题:
如何使我的Spring代码与这种连接一起工作?
我尝试将followig添加到我的application.properties文件中:
spring.data.mongodb.uri=mongodb://<my-user>:<insertYourPassword>@<my-cluster-endpoint>:27017/admin?ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs00
spring.data.mongodb.database=admin
server.ssl.key-store=classpath:rds-combined-ca-bundle.pem
Run Code Online (Sandbox Code Playgroud)
并将PEM文件放入 /src/main/resources
但是,该代码仍然无法连接到数据库集群。
我收到此消息是错误消息: No server chosen by com.mongodb.client.internal.MongoClientDelegate
跟一个 Exception in monitor thread while connecting to server ...
最后是超时异常: com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
它看起来像是一个安全组问题,但我没有问题,可以从运行Spring应用程序Pod的同一EC2中连接mongo shell。
有任何想法吗?
我正在尝试使用新的 AWS DocumentDB 服务运行现有应用程序。从 mongo shell 我尝试运行
db.geojson.createIndex( { geoData : "2dsphere" , sessionId:1 } )
并收到
{ "ok" : 0, "errmsg" : "Index type not supported : 2dsphere", "code" : 303 }
此代码适用于实际的 MongoDb 实例,但不适用于新的 AWS 服务,该服务应该与 MongoDB 3.6 兼容
AWS DocumentDB是我们要迁移到的相对较新的服务。要从VPC外部进行连接,必须创建到现有实例的隧道。
例如:
ssh -i "ec2Access.pem" -L 27017:sample-cluster.cluster-cu52jq5kfddg.us-east-1.docdb.amazonaws.com:27017 ubuntu@ec2-34-229-221-164.compute-1.amazonaws.com -N
Run Code Online (Sandbox Code Playgroud)
然后您可以从mongo shell用以下命令连接:
mongo --sslAllowInvalidHostnames --ssl --sslCAFile rds-combined-ca-bundle.pem --username <yourUsername> --password <yourPassword>
Run Code Online (Sandbox Code Playgroud)
您可以在以下位置查看此信息:https : //docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html
实际上,我可以按照上述说明将shell放入document db,但无法使用MongoDB指南针连接到它。我们需要能够为我们的非开发人员团队做到这一点。
amazon-ec2 amazon-web-services mongodb-compass aws-documentdb-mongoapi
How do I connect to Amazon's new DocumentBD database from node.js (In this case, using an out-of-the-box Elastic Beanstalk setup.)
This is my code, copied from the docs (with some values altered for privacy). It just times out and the eventual value of 'err' is 'true'. What did I miss? How can I get a better error?
var MongoClient = require('mongodb').MongoClient,fs = require('fs');
var ca = [fs.readFileSync("rds-combined-ca-bundle.pem")];
var connection_string = "mongodb://USERNAME:PASSWORD@docdb-2019-04-23-12-55-44.cluster-abcdefghij.eu-west-1.docdb.amazonaws.com:27017/?ssl=true&&replicaSet=rs0&readPreference=secondaryPreferred";
MongoClient.connect(
connection_string, {
sslValidate: true,
sslCA: ca,
useNewUrlParser: true …Run Code Online (Sandbox Code Playgroud) amazon-web-services node.js amazon-elastic-beanstalk aws-documentdb-mongoapi aws-documentdb
我不知道为什么 AWS DocumentDb 不支持 3.6 以上的 MongoDB 版本?我应该使用 mongo 3.6 还是 4.0 以上?
mongodb ×4
node.js ×2
ssl ×2
amazon-ec2 ×1
asp.net-core ×1
c# ×1
mongoose ×1
nestjs ×1
spring ×1