亚马逊AWS官方博客

Amazon DocumentDB 入门(兼容 MongoDB);第 2 部分 – 使用 AWS Cloud9

Original URL: https://aws.amazon.com/blogs/database/part-2-getting-started-with-amazon-documentdb-using-aws-cloud9/

Amazon DocumentDB(兼容 MongoDB)是一款快速、可扩展、高度可用且完全托管的文档数据库服务,它支持 MongoDB 工作负载。在 Amazon DocumentDB 上,您可以使用与 MongoDB 3.6相同的 应用程序代码、驱动程序和工具来运行、管理和扩展工作负载,无需关心管理底层基础设施。作为文档数据库,Amazon DocumentDB 可轻松存储、查询和索引 JSON 数据。

在本系列的第 2部分中,本文将向您展示如何在 AWS Cloud9 环境中开始使用 Amazon DocumentDB。第一步,在默认 Amazon VPC 中创建一个 AWS Cloud9 环境和一个 Amazon DocumentDB 集群。有关创建默认 VPC 的说明,请参阅 Amazon VPC 入门。本文演示了如何使用 mongo shell从 AWS Cloud9 环境连接到Amazon DocumentDB 集群并运行一些查询。完成此演练的成本不到 0.30 USD。创建 AWS 资源时,建议您遵循AWS IAM 最佳实践。有关从本地计算机开始使用 Amazon DocumentDB 的更多信息,请参阅 Amazon DocumentDB入门(兼容 MongoDB);第 1 部分 – 使用Amazon EC2

下图显示了本演练的最终架构。

对于本演练,请使用给定区域中的默认 VPC。有关更多信息,请参阅创建 Virtual Private Cloud (VPC)。

创建 AWS Cloud9 环境

要创建 AWS Cloud9 环境,请完成以下步骤:

  1. 使用 AWS 管理控制台,在AWS Cloud9 管理控制台上,选择创建环境。
  2. 在环境名称和描述下,对于名称,输入环境名称。 本文输入名称DocumentDBCloud9。
  3. 选择下一步。
  4. 在配置设置部分中,接受所有默认设置。
  5. 选择下一步。
  6. 在审查部分中,选择创建环境。

AWS Cloud9 环境的预置最多可能需要三分钟。完成后,您将看到以下命令提示符:

您将被重定向到命令提示符以安装 mongo shell,并连接到 Amazon DocumentDB 集群。

创建安全组

在此步骤中,您需要创建一个新的安全组,该安全组让您可以从 AWS Cloud9 环境中通过端口27017(Amazon DocumentDB 的默认端口)连接到 Amazon DocumentDB 集群。请完成以下步骤:

  1. Amazon EC2 控制台上的网络和安全性下,选择安全性组。
  2. 选择创建安全组。
  3. 对于安全组名称,输入demoDocDB。
  4. 对于VPC,请接受使用默认 VPC
  5. 对于描述,输入您的组的描述。
  6. 在入站规则部分,选择添加规则。
  7. 对于类型,选择自定义 TCP 规则。
  8. 对于端口范围,输入27017。 源安全组是您刚创建的用于 AWS Cloud9 环境的安全组。
  9. 要查看可用安全组的列表,请在目标字段中输入cloud9。
  10. 选择名称为aws-cloud9-<environment name> 的安全组。
  11. 接受所有其他默认设置,然后选择创建安全组。

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

创建一个 Amazon DocumentDB 集群

要创建您的 Amazon DocumentDB 集群,请完成以下步骤:

  1. Amazon DocumentDB 管理控制台上的集群下,选择创建。
  2. 在创建 Amazon DocumentDB集群页面上,为实例数选择1。 这有助于最大程度地降低成本。
  3. 将其他设置保留为默认设置。
  4. 在身份验证部分中,输入用户名和密码。
  5. 打开显示高级设置。
  6. 在网络设置部分中,对于VPC 安全组,选择 demoDocDB。

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

安装 mongo shell

现在您可以安装 mongo shell,这是一个命令行实用工具,可用于连接和查询 Amazon DocumentDB 集群。

要安装插件,请完成以下步骤:

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

  1. AWS Cloud9 管理控制台上,在您的环境下,选择 DocumentDBCloud9。
  2. 选择打开 IDE。
  3. 根据命令提示符,使用以下代码创建存储库文件:

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

  1. 完成后,使用以下代码安装 mongo shell:

sudo yum install -y mongodb-org-shell

所有新的 Amazon DocumentDB 集群默认启用传输层安全性 (TLS)。有关更多信息,请参阅管理Amazon DocumentDB 集群 TLS设置

  1. 要加密传输中的数据,请下载 Amazon DocumentDB 的 CA 证书。请参见以下代码:

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

现在您可以连接到 Amazon DocumentDB 集群。

连接到您的 Amazon DocumentDB 集群

  1. 在 Amazon DocumentDB 控制台上的集群下,找到您的集群。 本文使用集群docdb-2020-02-08-14-15-11。
  2. 选择您创建的集群。
  3. 复制提供的连接字符串。 省略<insertYourPassword>,以便在连接时由 mongo shell 提示您输入密码。这样就不必以明文形式输入密码。 您的连接字符串应类似于以下代码: 如果输入密码后看到 rs0:PRIMARY> 提示,说明您已成功连接到 Amazon DocumentDB 集群。有关故障排除的信息,请参见Amazon DocumentDB 故障排除

插入和查询数据

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

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

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, "score" : 27 }

使用筛选器对单个文档进行查询。请参阅以下代码。

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 }

清理

完成演练后,您可以停用 Amazon DocumentDB 集群,以降低成本,或者删除资源。默认情况下,闲置 30 分钟后,您的 AWS Cloud9 环境会停止基础 EC2 实例,以帮助节省成本。

小结

本文向您展示了 Amazon DocumentDB 的入门操作,包括创建 AWS Cloud9 环境、安装 mongo shell、创建 Amazon DocumentDB 集群、连接到集群以及通过执行一些查询在 Amazon DocumentDB 内部轻松插入和查询 JSON 文档。有关更多信息,请参阅 Amazon DocumentDB 的提升(兼容 MongoDB)。有关最新发布和博文的更多信息,请参阅 Amazon DocumentDB(兼容 MongoDB)资源

本篇作者

Joseph Idziorek

Amazon Web Services公司首席产品经理。

Aleksandr Iziumov

Amazon Web Services 的一名解决方案架构师。