本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用 Amazon DocumentDB 弹性集群
这个入门部分将向您介绍如何创建和查询您的第一个弹性集群。有许多连接并开始使用弹性集群的方式。本指南使用 Amazon Elastic Compute Cloud (Amazon EC2),直接从 Amazon Web Services Management Console 连接和查询 Amazon DocumentDB 弹性集群。
设置
如果您希望通过创建与 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 控制台中,就从导航窗格选择用户。
-
选择您的用户名。
-
点击添加权限 按钮。
-
选择直接附加策略。
-
在搜索栏中键入
AmazonDocDBFullAccess
,并且一旦它出现在搜索结果中就选择之。 -
点击下一步按钮。
-
点击添加权限按钮。
-
- 创建 Amazon Virtual Private Cloud(Amazon VPC)
-
您的 Amazon 账户在每个区域中均包含一个默认 VPC。这个步骤仅在您选择使用默认 Amazon VPC 时才需要。在此情况下,请完成《Amazon VPC 用户指南》的创建 Amazon VPC 主题中的步骤。
- 启动 Amazon EC2 实例
-
完成《Amazon Elastic Compute Cloud 用户指南》的 Amazon EC2 入门主题中的步骤 1 和 2。
注意
记录为 Amazon EC2 实例创建的安全组的名称和 ID。
第 1 步:创建弹性集群
在这个部分,我们将解释如何配合以下说明使用 Amazon Web Services Management Console 或 Amazon CLI,创建一个全新的弹性集群。
步骤 2:启用入站连接
Amazon DocumentDB 集群的访问权限由其关联安全组进行控制。在此步骤中,您将修改 Amazon DocumentDB 安全组,以便通过弹性集群配置的端口(默认为 27017)与 Amazon EC2 实例通信。
-
在 Amazon DocumentDB 管理控制台上,集群下,定位您的集群。
通过单击集群标识符选择您已创建的集群。
在连接和安全选项卡的安全部分中,选择 VPC 安全组。
这将打开 Amazon EC2 管理控制台的安全组列表。或者,可以访问 Amazon EC2 管理控制台,从网络和安全部分选择安全组。
选择 Amazon DocumentDB(默认)安全组。
-
选择入站规则选项卡(可能需要滚动到窗口底部),然后选择编辑入站规则。
-
在编辑入站规则对话框中,选择添加规则。
对于端口范围,输入
27017
。将源保留为自定义,然后搜索您从创建于 先决条件 中的 EC2 实例记录的安全组值。
选择保存规则。
步骤 3:安装 mongo shell
将 mongo shell 安装于您在 先决条件 创建的 Amazon EC2 实例中。mongo shell 是一个命令行实用程序,用于连接和查询弹性集群。
连接到 Amazon EC2 实例,并在命令提示符中,使用以下命令创建存储库文件:
echo -e "[mongodb-org-5.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/5.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://pgp.mongodb.com/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
创建完成后,用以下命令安装 mongo shell:
sudo yum install -y mongodb-org-shell
步骤 4:连接到新弹性集群
使用您在步骤 2 中安装过的 mongo shell 连接到您的集群。
-
在 Amazon DocumentDB 管理控制台上,集群下,定位您的集群。按角色排序以显示角色为弹性集群的所有集群。
-
通过选择集群标识符,选择您创建的集群。从连接和安全中,将您的端点复制并粘贴到 Amazon EC2 实例中。
-
一旦完成后,您应该可以看到类似于如下输出的内容:
步骤 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 }