如何使用连接字符串连接到 Amazon DocumentDB?

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

我正在尝试通过 SSH 端口转发连接到 Amazon DocumentDB 集群,如此处所述。我可以使用这个命令连接...

mongosh --host localhost:27017 --ssl --sslAllowInvalidHostnames --sslCAFile rds-combined-ca-bundle.pem --username REDACTED --password REDACTED

...但不是这个命令...

mongosh mongodb://REDACTED:REDACTED@localhost:27017/?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem

它失败并显示错误消息“无法获取本地颁发者证书”。至少一个问题是我无法找到任何有关如何将

--sslAllowInvalidHostnames
选项转换为连接字符串格式的文档。我发现了 this,但是添加
&sslVerifyCertificate=false
并没有改变任何东西,所以我在这里可能做错了其他事情。

mongodb ssl aws-documentdb
2个回答
2
投票

我(有点)想通了。我从未通过 mongosh 使用连接字符串,但是当使用它在代码中连接时(这是我的最终目标),您必须采取特定于语言的步骤来安装 CA 证书。然后您可以使用这样的连接字符串连接您的应用程序。

mongodb://REDACTED:REDACTED@localhost:27017?tls=true&tlsInsecure=true

0
投票

与 DocumentDB 建立编程连接

  1. 在本地服务器和 DocumentDB 集群之间建立安全隧道。

创建隧道可以通过多种方法来实现,最安全的方法是使用专用工具。 Putty 就是这样的工具之一,它有助于建立隧道过程。

要使用 Putty 创建隧道,请按照以下步骤操作:

第1步:安装Putty(版本0.77)。从以下链接下载 Putty:Putty 0.77 下载

第 2 步:打开 Putty 并根据您的隧道要求进行配置。

在“会话”选项卡中,我们需要输入主机名和端口。主机名:3.87.129.28,端口:22。

第 3 步:导航到连接选项卡并设置连接详细信息和隧道配置。

在“Auth”选项卡中,您需要指定私钥文件 (.ppk) 的路径,以便建立与隧道服务器的连接。

在“隧道”选项卡中,我们需要输入源端口和名称。

源端口:8080

名称:docdb-2024-03-18-07-00-04.cluster-cp64sl7qubb3.us-east-1.docdb.amazonaws.com:27017

然后点击添加按钮设置转发端口,

第5步:单击“打开”按钮访问终端并以用户“ubuntu”登录。

第 6 步:通过在本地服务器上执行以下命令来验证隧道连接:

命令:netstat –a

我们可以看到当地的回应

  1. 使用 pip 安装必要的 Python 包

pip 安装 pymongo

pip 安装路径库

  1. 使用 Python 建立与 DocumentDB 的连接

第1步:从以下URL下载SSL证书:SSL证书下载

第2步:在下面的示例代码中指定证书。

注意:我们需要提及的 SSL 证书的完整路径。

import pymongo 

导入系统

导入操作系统

导入路径库

客户端连接

mongo_client = pymongo.MongoClient(

host=f"mongodb://XXXXX:YYYYYY@localhost:8080/?", 

tlsCAFile=os.fspath(pathlib.Path(__file__).parent.parent.parent / 'E:\\Python Scrips\\DocumentDB\\global-bundle.pem'), 

tls=True, 

authMechanism="SCRAM-SHA-1", 

tlsAllowInvalidHostnames=True, 

directConnection=True, 

retryWrites=False, 

##指定要使用的数据库

db = mongo_client.sample_database

##指定要使用的集合

col = db.sample_collection

##插入单个文档

col.insert_one({'hello':'Amazon DocumentDB_jagadeesh_cloud_team_test_record'})

##找到之前写的文档

x = col.find_one({'hello':'Amazon DocumentDB_jagadeesh_cloud_team_test_record'})

打印(x)

##将结果打印到屏幕上

database_names = mongo_client.list_database_names()

对于database_names中的db_name:

print(db_name) 

##关闭连接

mongo_client.close()

© www.soinside.com 2019 - 2024. All rights reserved.