本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用 Amazon DocumentDB 弹性集群
这个入门部分将向您介绍如何创建和查询您的第一个弹性集群。有许多连接并开始使用弹性集群的方式。本指南利用 Amazon Cloud9,它基于 Web 的终端,直接使用来自 Amazon Web Services Management Console的 mongo shell 连接和查询您的弹性集群。
设置
如果您希望通过创建与 Amazon EC2 实例的 SSH 连接从您的本地计算机连接到您的 Amazon DocumentDB,请参阅用 Amazon EC2 连接。
先决条件
在创建第一个 Amazon DocumentDB 集群之前,您必须执行以下操作:
- 已创建 Amazon Web Services(Amazon)账户
-
在开始使用 Amazon DocumentDB 之前,您必须拥有 Amazon Web Services(Amazon)账户。该 Amazon 账户是免费的。您只需为使用的服务和资源付费。
如果您没有 Amazon Web Services 账户,请完成以下步骤来创建一个。
要注册 Amazon Web Services 账户
按照屏幕上的说明进行操作。
在注册时,将接到一通电话,要求使用电话键盘输入一个验证码。
当您注册时 Amazon Web Services 账户,就会创建Amazon Web Services 账户根用户一个。根用户有权访问该账户中的所有 Amazon Web Services 和资源。作为安全最佳实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务。
- 设置所需的 Amazon Identity and Access Management (IAM) 权限。
-
要管理集群、实例和集群参数组等 Amazon DocumentDB 资源,需要 Amazon 能够对您的请求进行身份验证的证书。有关更多信息,请参阅 适用于 Amazon DocumentDB 的 Identity and Access Management。
-
在的搜索栏中 Amazon Web Services Management Console,键入 IAM,然后在下拉菜单中选择 IAM。
-
一旦您进入 IAM 控制台,就从导航窗格中选择用户。
-
选择您的用户名。
-
点击添加权限 按钮。
-
选择 Attach existing policies directly(直接附加现有策略)。
-
在搜索栏中键入
AmazonDocDBFullAccess
,并且一旦它出现在搜索结果中就选择之。 -
在底部点击写有下一步:查看的蓝色按钮。
-
在底部点击写有添加权限的蓝色按钮。
-
- 创建 Amazon Virtual Private Cloud(Amazon VPC)
-
这个步骤仅在您尚没有默认的 Amazon VPC 时才需要。如果您的确没有,请完成 Amazon VPC 用户指南中 Amazon VPC 入门的步骤 1。这将耗时不到五分钟。
第 1 步:创建弹性集群
在本节中,我们将说明如何使用 Amazon Web Services Management Console 或 Amazon CLI 并按照以下说明创建全新的弹性集群。
步骤 2:创建 Amazon Cloud9 环境
Amazon Cloud9 提供了一个基于 Web 的终端,您可以使用该终端使用 mongo 外壳连接和查询您的 Amazon DocumentDB 弹性集群。
注意
注意:您的 Amazon Cloud9 环境必须与您的实例位于同一个安全组中。您可以在 Amazon EC2 控制台中更改安全组。
-
使用您的 Amazon 帐户并访问 Amazon Web Services Management Console.
-
导航到 Amazon Cloud9 控制台。您可以在搜索字段中键入“Cloud9” 来定位它。
-
在Amazon Cloud9环境主页上,选择创建环境。
-
在环境名称页面上,名称字段中,输入您选择的名称。
选择下一步。
-
在环境设置中,环境类型部分下,选择为环境创建新 EC2 实例(直接访问)。
在实例类型部分下,为您的网络选择合适的实例类型。
在平台部分下,选择Amazon Linux 2(推荐)。
-
展开 Network settings (advanced)(网络设置(高级))。
选择您在创建自身弹性集群时用过的 VPC 和诸子网之一。
选择下一步。
-
查看您的 Amazon Cloud9 配置。
如果您的配置正确,请选择创建环境。
步骤 3:安装 mongo shell
Amazon Cloud9 环境准备就绪后,您就可以连接到集群了。接下来,在您的 Amazon Cloud9 环境中安装您在步骤 3 中创建的 mongo 外壳。mongo shell 是一个命令行实用程序,用于连接和查询弹性集群。
如果从步骤 3 开始您的 Amazon Cloud9 环境仍处于打开状态,请返回该环境并跳至指令 3。如果您离开了您的 Amazon Cloud9 环境,请在 Amazon Cloud9 控制台的 “您的环境” 下方找到标有您在上一步中设置的名称的环境。选择打开 IDE。
-
在命令提示符下,用以下命令创建存储库文件:
echo -e "[mongodb-org-4.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo
-
创建完成后,用以下命令安装 mongo shell:
sudo yum install -y mongodb-org-shell
步骤 4:连接到新弹性集群
使用您在步骤 4 中安装过的 mongo shell 连接到您的集群。
-
在 Amazon DocumentDB 管理控制台上,集群下,定位您的集群。按角色排序以显示角色为弹性集群的所有集群。
-
通过选择集群标识符,选择您创建的集群。在 “连接和安全” 中,复制您的终端节点并将其粘贴到您的 Amazon Cloud9 环境中。
-
一旦连接,您应看到以下输出:
步骤 5:对您的集合分片;插入和查询数据
弹性集群增加对 Amazon DocumentDB 中分片过程的支持。既然您已连接到集群,您可以对集群分片、插入数据并运行数个查询。
-
要对集合分片,请输入以下:
sh.shardCollection("db.Employee1" , { "Employeeid" : "hashed" })
-
要插入单个文档,请输入以下内容:
db.Employee1.insert({"Employeeid":1, "Name":"Joe", "LastName": "Bruin", "level": 1 })
以下输出显示:
WriteResult({ "nInserted" : 1 })
-
要阅读您编写的文档,请输入以下
findOne()
命令(它返回单一文档):db.Employee1.findOne()
以下输出显示:
{ "_id" : ObjectId("61f344e0594fe1a1685a8151"), "EmployeeID" : 1, "Name" : "Joe", "LastName" : "Bruin", "level" : 1 }
-
要执行若干更多查询,请考虑游戏配制文件用例。首先,将几个条目插入标题为“员工”的集合。输入以下信息:
db.Employee1.insertMany([ { "Employeeid" : 1, "name" : "Matt", "lastname": "Winkle", "level": 12}, { "Employeeid" : 2, "name" : "Frank", "lastname": "Chen", "level": 2}, { "Employeeid" : 3, "name" : "Karen", "lastname": "William", "level": 7}, { "Employeeid" : 4, "name" : "Katie", "lastname": "Schaper", "level": 3} ])
以下输出显示:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3, 4 ] }
-
要返回配制文件集合中的所有文档,请输入
find
() 命令:db.Employee1.find()
您在步骤 4 中输入的数据显示。
-
要查询单一文档,请纳入过滤器(例如:“Katie”)。输入以下信息:
db.Employee1.find({name: "Katie"})
以下输出显示:
{ "_id" : 4, "name" : "Katie", "lastname": "Schaper", "level": 3}
-
要查找配置文件并对其进行修改,请输入
findAndModify
命令。在此示例中,给予员工“Matt”更高等级,即 “14”:db.Employee1.findAndModify({ query: { "Employeeid" : 1, "name" : "Matt"}, update: { "Employeeid" : 1, "name" : "Matt", "lastname" : "Winkle", "level" : 14 } })
以下输出显示(请注意,级别尚未更改):
{ "_id" : 1, "name" : "Matt", "lastname" : "Winkle", "level" : 12, }
-
要验证级别提高,请输入以下查询:
db.Employee1.find({name: "Matt"})
以下输出显示:
{ "_id" : 1, "name" : "Matt", "lastname" : "winkle", "level" : 14 }