通过 AWS Cloud9 使用 Amazon DocumentDB
日期: 2022-11-04

Amazon DocumentDB(兼容 MongoDB)是一种快速、可扩展、高度可用且完全托管的文档数据库服务,支持 MongoDB 工作负载,可让用户轻松存储、查询和索引 JSON 数据。
本文介绍如何通过 AWS Cloud9 开始使用 Amazon DocumentDB。您将了解如何通过 Mongo Shell 从 AWS Cloud9 环境连接到 Amazon DocumentDB 集群并运行一些查询。

 

架构图

 

 

实现过程

 

1.创建 AWS Cloud9 环境

使用 AWS 管理控制台,在 AWS Cloud9 管理控制台上选择创建环境。

 

 

输入名称 DocumentDBCloud9。

 

 

选择下一步。

 

 

在配置设置部分,接受所有默认设置。
选择下一步。
在审核部分,选择创建环境。

 

 

预置 AWS Cloud9 环境最多需要三分钟时间。

 

2.创建安全组

 

在 Amazon EC2 管理控制台的网络与安全下,选择安全组。

选择创建安全组。

对于安全组名称,输入demoDocDB。

对于描述,输入描述。

对于VPC,接受默认 VPC 的使用

在入站规则部分,选择添加规则.

对于类型,选择自定义 TCP 规则。

对于端口范围,输入 27017。

源安全组是您刚刚创建的 AWS Cloud9 环境的安全组。将源保留为默认值自定义,并在自定义旁边的字段中输入“cloud9”以查看可用安全组的列表。

 

 

选择包含名称 aws-cloud9-<环境名称> 的安全组
接受所有其他默认设置,然后选择创建安全组。您无需修改出站规则。

 

以下屏幕截图显示了您在此步骤中创建的安全组,以及在创建 AWS Cloud9 环境时创建的 AWS Cloud9 安全组。

 

 

3.创建 Amazon DocumentDB 集群

在Amazon DocumentDB 管理控制台的集群下,选择创建。

 

 

在创建 Amazon DocumentDB 集群页面上,在实例类下选择db.t3.medium,然后为实例数量选择1。这些选项有助于最大程度地降低成本。

 

 

将其他设置保留为默认设置。
在身份验证部分,输入用户名和密码。

 

 

打开显示高级设置。

 

 

在网络设置部分,对于 VPC 安全组,选择 demoDocDB。

 

 

选择创建集群。

Amazon DocumentDB 现在正在预置您的集群,这可能需要几分钟才能完成。当集群和实例状态都显示为“可用”时,您可以连接到该集群。当 Amazon DocumentDB 预置集群时,请完成剩余步骤以连接到 Amazon DocumentDB 集群。

 

4.安装 Mongo Shell

如果您的 AWS Cloud9 环境仍处于打开状态,则可以跳至步骤 3。

在AWS Cloud9 管理控制台的您的环境下,选择DocumentDBCloud9。

选择打开 IDE。

 

在命令提示符下,使用以下代码创建存储库文件:

echo -e “[mongodb-org-3.6] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc” | sudo tee /etc/yum.repos.d/mongodb-org-3.6.repo

 

完成后,使用以下代码安装 Mongo Shell:

sudo yum install -y mongodb-org-shell

 

要对动态数据进行加密,请下载 Amazon Document DB 的 CA 证书。请参阅以下代码:

wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

 

现在,您已准备好连接到 Amazon DocumentDB 集群。

 

5.连接到 Amazon DocumentDB 集群

在Amazon DocumentDB 管理控制台的集群下,找到您的集群。本博文使用集群 docdb-2020-02-08-14-15-11。

通过单击集群标识符来选择您创建的集群(在此示例中为 docdb-2020-02-08-14-15-11)。

复制“使用 Mongo Shell 连接到此集群”下提供的连接字符串。

省略 <insertYourPassword>,以便在连接时由 Mongo Shell 提示您输入密码。这样,您不必以明文形式输入密码。

 

 

您的连接字符串应类似于以下代码(请参见屏幕截图)

 

 

当您输入密码并看到 rs0:PRIMARY> 提示时,您已成功连接到AmazonDocumentDB 集群。

 

6.插入和查询数据

现在您已连接到集群,您可以运行一些查询来熟悉文档数据库的使用。

 

要插入单个文档,请输入以下代码:

db.collection.insert({“hello”:”DocumentDB”})

 

您将获得以下输出:

WriteResult({ “nInserted” : 1 })

 

可以阅读使用 findOne() 命令编写的文档(因为它只返回一个文档)。请参阅以下代码:

db.collection.findOne()

 

您将获得以下输出:

{ “_id” : ObjectId(“5e401fe56056fda7321fbd67”), “hello” : “DocumentDB” }

 

要执行更多查询,请考虑游戏档案用例。首先,将一些条目插入名为档案的集合中。请参阅以下代码:

db.profiles.insertMany([
{ “_id” : 1, “name” : “Tim”, “status”: “active”, “level”: 12, “score”:202},
{ “_id” : 2, “name” : “Justin”, “status”: “inactive”, “level”: 2, “score”:9},
{ “_id” : 3, “name” : “Beth”, “status”: “active”, “level”: 7, “score”:87},
{ “_id” : 4, “name” : “Jesse”, “status”: “active”, “level”: 3, “score”:27}
])

 

您将获得以下输出:

{ “acknowledged” : true, “insertedIds” : [ 1, 2, 3, 4 ] }

 

使用 find() 命令返回个人资料集合中的所有文档。请参阅以下代码:

db.profiles.find()

 

您将获得以下输出:

{ “_id” : 1, “name” : “Tim”, “status” : “active”, “level” : 12, “score” : 202 }
{ “_id” : 2, “name” : “Justin”, “status” : “inactive”, “level” : 2, “score” : 9 }
{ “_id” : 3, “name” : “Beth”, “status” : “active”, “level” : 7, “score” : 87 }
{ “_id” : 4, “name” : “Jesse”, “status” : “active”, “level” : 3,

 

使用筛选条件查询单个文档。请参阅以下代码。

db.profiles.find({name: “Jesse”})

 

您将获得以下输出:

{ “_id” : 4, “name” : “Jesse”, “status” : “active”, “level” : 3, “score” : 27 }

 

游戏中的一个常见用例是查找给定用户的档案,并在该用户的档案中增加值。在此场景中,您希望向最活跃的游戏玩家进行促销。如果玩家填写了一项调查,则其分数会增加 10。

为此,请使用 findAndModify 命令。在此用例中,用户 Tim 收到并完成了调查。要为 Tim 提供积分,请输入以下代码:

db.profiles.findAndModify({
   query: { name: “Tim”, status: “active”},
   update: { $inc: { score: 10 } }
})

 

您将获得以下输出:

{
      “_id” : 1,
      “name” : “Tim”,
      “status” : “active”,
      “level” : 12,
      “score” : 202
}

 

您可以使用以下查询来验证结果:

db.profiles.find({name: “Tim”})

 

您将获得以下输出:

{ “_id” : 1, “name” : “Tim”, “status” : “active”, “level” : 12, “score” : 212 }

 

7.清理

完成演练后,请停止 Amazon DocumentDB 集群以降低成本或完全删除集群。

默认情况下,在处于非活动状态 30 分钟后,AWS Cloud9 环境将停止底层 EC2 实例,以帮助节省成本。