开始使用 Amazon DocumentDB 弹性集群 - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

开始使用 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 账户
  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,将接到一通电话,要求使用电话键盘输入一个验证码。

    当您注册时 Amazon Web Services 账户,就会创建Amazon Web Services 账户根用户一个。根用户有权访问该账户中的所有 Amazon Web Services 和资源。作为安全最佳实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务

设置所需的 Amazon Identity and Access Management (IAM) 权限。

要管理集群、实例和集群参数组等 Amazon DocumentDB 资源,需要 Amazon 能够对您的请求进行身份验证的证书。有关更多信息,请参阅 适用于 Amazon DocumentDB 的 Identity and Access Management

  1. 在的搜索栏中 Amazon Web Services Management Console,键入 IAM,然后在下拉菜单中选择 IAM

  2. 一旦您进入 IAM 控制台,就从导航窗格中选择用户

  3. 选择您的用户名。

  4. 点击添加权限 按钮。

  5. 选择 Attach existing policies directly(直接附加现有策略)。

  6. 在搜索栏中键入 AmazonDocDBFullAccess,并且一旦它出现在搜索结果中就选择之。

  7. 在底部点击写有下一步:查看的蓝色按钮。

  8. 在底部点击写有添加权限的蓝色按钮。

创建 Amazon Virtual Private Cloud(Amazon VPC)

这个步骤仅在您尚没有默认的 Amazon VPC 时才需要。如果您的确没有,请完成 Amazon VPC 用户指南 Amazon VPC 入门的步骤 1。这将耗时不到五分钟。

第 1 步:创建弹性集群

在本节中,我们将说明如何使用 Amazon Web Services Management Console 或 Amazon CLI 并按照以下说明创建全新的弹性集群。

Using the Amazon Web Services Management Console

使用 Amazon Web Services Management Console创建弹性集群配置:

  1. 登录 Amazon Web Services Management Console 并打开 Amazon DocumentDB 控制台。

  2. Amazon DocumentDB 管理控制台上,集群下,选择创建

    图:弹性集群创建
  3. 创建 Amazon DocumentDB 集群页面上,集群类型部分中,选择弹性集群。

    图:弹性集群类型
  4. 创建 Amazon DocumentDB 集群页面上,配置部分中,输入唯一集群标识符(遵循字段下方的命名要求)。

    图表:弹性集群标识符
  5. 对于分片配置字段:

    1. 分片计数字段中,输入您在自身集群中想要的分片的数目。每个集群的最大分片数目为 32。

      注意

      将对每个分片部署两个节点。两个节点将具有相同的分片容量。

    2. 分片实例计数字段中,选择要与每个分片关联的副本实例数量。分片实例的最大数量为 16,以 1 为增量。所有副本实例的分片容量均与以下字段中定义的相同。

      注意

      副本实例的数量适用于弹性集群中的所有分片。分片实例计数值为 1 表示只有一个写入器实例,而任何其他实例都是可用于读取和提高可用性的副本。

    3. 分片容量字段中,选择要与每个分片实例关联的虚拟 CPU (vCPU) 数量。每个分片实例的最大 vCPU 数量为 64。允许值为 2、4、8、16、32、64。

    图:弹性集群分片数目和容量
  6. 虚拟私有云(VPC)字段中,从下拉列表中选择一个 VPC。

    对于子网 VPC 安全组,您可以使用默认值或选择您选定的三个子网和多达三个 VPC 安全组(最少一个)。

    图:弹性集群 VPC 和子网
  7. 在 “身份验证” 部分,在 “用户名” 字段中输入标识主用户登录名的字符串。

    密码字段中,输入符合说明的唯一密码。

    图:弹性集群用户名和密码
  8. 加密部分中,保留默认设置。

    或者,您可以输入自己创建的 Amazon KMS key ARN。有关更多信息,请参阅 用于 Amazon DocumentDB 弹性集群的静态数据加密

    重要

    必须对弹性集群启用加密。

  9. Backup 部分,根据您的备份要求编辑字段。

    显示用于配置集群备份时段的步骤的“Backup (备份)”窗格屏幕截图。
    1. 备份留存期 — 在列表中,选择在删除此集群的自动备份前保留它们的天数。

    2. 备份时段 — 设置 Amazon DocumentDB 要备份此集群的每日时间和持续时间。

      1. 如果要配置创建备份的时间和持续时间,请选择 “选择窗口”。

        开始时间 — 在第一个列表中,选择开始自动备份的开始时间小时 (UTC)。在第二个列表中,选择您希望自动备份开始的时间(分钟)。

        持续时间 — 在该列表中,选择要向创建自动备份分配的小时数。

      2. 如果您希望 Amazon DocumentDB 选择创建备份的时间和持续时间,请选择 “无首选项”。

  10. 维护部分中,选择对集群进行修改或修补的日期、时间和持续时间。

    图:弹性集群用户名和密码
  11. 选择创建集群

弹性集群现正在预配置。此过程可能需要数分钟完成。当弹性集群状态在集群列表中作为 active 显示时,您可以连接到您的集群。

Using the Amazon CLI

要使用创建弹性集群 Amazon CLI,请使用带有以下参数的create-cluster操作:

  • --cluster-name – 必填项。创建期间输入或上次修改的弹性扩展集群的当前名称。

  • --shard-capacity – 必填项。分配给每个分片的 vCPU 的数目。最大值为 64。允许值为 2、4、8、16、32、64。

  • --shard-count – 必填项。分配给集群的分片的数目。最大值为 32。

  • --shard-instance-count—可选。应用于此集群中所有分片的副本实例数量。最大值为 16。

  • --admin-user-name – 必填项。与管理用户关联的用户名。

  • --admin-user-password – 必填项。与管理用户关联的密码。

  • --auth-type – 必填项。用于确定从何处获取用于访问弹性集群的密码的身份验证类型。有效类型为 PLAIN_TEXTSECRET_ARN

  • --vpc-security-group-ids—可选。要与此集群关联的 EC2 VPC 安全组的列表。

  • --preferred-maintenance-window—可选。配置可进行系统维护的每周时间范围(采用通用协调时间(UTC))。

    格式为:ddd:hh24:mi-ddd:hh24:mi。有效值 (ddd):Mon、Tue、Wed、Thu、Fri、Sat、Sun

    默认值为每个 Amazon Web Services 区域 8 小时的时间段中随机选择的 30 分钟时段(随机选取周中的某天进行)。

    至少 30 分钟的窗口。

  • --kms-key-id—可选。配置已加密集群的 KMS 密钥标识符。

    KMS 密钥标识符是 Amazon KMS 加密密钥的亚马逊资源名称 (ARN)。如果使用拥有用于加密新集群的 KMS 加密密钥的同一 Amazon Web Services 账户创建集群,则可以使用 KMS 密钥别名而不是 KMS 加密密钥的 ARN。

    如果中未指定加密密钥, KmsKeyId 且StorageEncrypted参数为真,则 Amazon DocumentDB 将使用您的默认加密密钥。

  • --preferred-backup-window—可选。创建自动备份的每日首选时间范围。默认值是从 8 小时的时间段中随机选择一个 30 分钟的窗口。 Amazon Web Services 区域

  • --backup-retention-period — 可选。自动备份的保留天数。默认值是 1。

  • --storage-encrypted—可选。配置集群是已加密还是未加密。

    --no-storage-encrypted 指定集群未加密。

  • --subnet-ids—可选。配置网络子网 ID。

在以下示例中,将每个用户输入占位符替换为您自己的信息。

注意

以下示例包括创建特定 KMS 密钥。要使用默认 KMS 密钥,请不要包含 --kms-key-id 参数。

对于 Linux、macOS 或 Unix:

aws docdb-elastic create-cluster \ --cluster-name sample-cluster-123 \ --shard-capacity 8 \ --shard-count 4 \ --shard-instance-count 3 \ --auth-type PLAIN_TEXT \ --admin-user-name testadmin \ --admin-user-password testPassword \ --vpc-security-group-ids ec-65f40350 \ --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 \ --subnet-ids subnet-9253c6a3, subnet-9f1b5af9 \ --preferred-backup-window 18:00-18:30 \ --backup-retention-period 7

对于 Windows:

aws docdb-elastic create-cluster ^ --cluster-name sample-cluster-123 ^ --shard-capacity 8 ^ --shard-count 4 ^ --shard-instance-count 3 ^ --auth-type PLAIN_TEXT ^ --admin-user-name testadmin ^ --admin-user-password testPassword ^ --vpc-security-group-ids ec-65f40350 ^ --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 ^ --subnet-ids subnet-9253c6a3, subnet-9f1b5af9 \ --preferred-backup-window 18:00-18:30 \ --backup-retention-period 7

步骤 2:创建 Amazon Cloud9 环境

Amazon Cloud9 提供了一个基于 Web 的终端,您可以使用该终端使用 mongo 外壳连接和查询您的 Amazon DocumentDB 弹性集群。

注意

注意:您的 Amazon Cloud9 环境必须与您的实例位于同一个安全组中。您可以在 Amazon EC2 控制台中更改安全组。

  1. 使用您的 Amazon 帐户并访问 Amazon Web Services Management Console.

  2. 导航到 Amazon Cloud9 控制台。您可以在搜索字段中键入“Cloud9” 来定位它。

  3. Amazon Cloud9环境主页上,选择创建环境

  4. 环境名称页面上,名称字段中,输入您选择的名称。

    选择下一步

    图表:Cloud9 名称
  5. 环境设置中,环境类型部分下,选择为环境创建新 EC2 实例(直接访问)

    实例类型部分下,为您的网络选择合适的实例类型。

    平台部分下,选择Amazon Linux 2(推荐)

    图表:Cloud9 环境设置
  6. 展开 Network settings (advanced)(网络设置(高级))

    选择您在创建自身弹性集群时用过的 VPC 和诸子网之一。

    选择下一步

    图表:Cloud9 网络设置
  7. 查看您的 Amazon Cloud9 配置。

    如果您的配置正确,请选择创建环境

步骤 3:安装 mongo shell

Amazon Cloud9 环境准备就绪后,您就可以连接到集群了。接下来,在您的 Amazon Cloud9 环境中安装您在步骤 3 中创建的 mongo 外壳。mongo shell 是一个命令行实用程序,用于连接和查询弹性集群。

如果从步骤 3 开始您的 Amazon Cloud9 环境仍处于打开状态,请返回该环境并跳至指令 3。如果您离开了您的 Amazon Cloud9 环境,请在 Amazon Cloud9 控制台的 “您的环境” 下方找到标有您在上一步中设置的名称的环境。选择打开 IDE

  1. 在命令提示符下,用以下命令创建存储库文件:

    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
  2. 创建完成后,用以下命令安装 mongo shell:

    sudo yum install -y mongodb-org-shell

步骤 4:连接到新弹性集群

使用您在步骤 4 中安装过的 mongo shell 连接到您的集群。

  1. 在 Amazon DocumentDB 管理控制台上,集群下,定位您的集群。按角色排序以显示角色为弹性集群的所有集群。

    图:弹性集群列表屏幕
  2. 通过选择集群标识符,选择您创建的集群。在 “连接和安全” 中,复制您的终端节点并将其粘贴到您的 Amazon Cloud9 环境中。

    图:弹性集群连接屏幕
  3. 一旦连接,您应看到以下输出:

    图:最终弹性集群连接屏幕

步骤 5:对您的集合分片;插入和查询数据

弹性集群增加对 Amazon DocumentDB 中分片过程的支持。既然您已连接到集群,您可以对集群分片、插入数据并运行数个查询。

  1. 要对集合分片,请输入以下:

    sh.shardCollection("db.Employee1" , { "Employeeid" : "hashed" })

  2. 要插入单个文档,请输入以下内容:

    db.Employee1.insert({"Employeeid":1, "Name":"Joe", "LastName": "Bruin", "level": 1 })

    以下输出显示:

    WriteResult({ "nInserted" : 1 })

  3. 要阅读您编写的文档,请输入以下findOne()命令(它返回单一文档):

    db.Employee1.findOne()

    以下输出显示:

    { "_id" : ObjectId("61f344e0594fe1a1685a8151"), "EmployeeID" : 1, "Name" : "Joe", "LastName" : "Bruin", "level" : 1 }
  4. 要执行若干更多查询,请考虑游戏配制文件用例。首先,将几个条目插入标题为“员工”的集合。输入以下信息:

    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 ] }

  5. 要返回配制文件集合中的所有文档,请输入find () 命令:

    db.Employee1.find()

    您在步骤 4 中输入的数据显示。

  6. 要查询单一文档,请纳入过滤器(例如:“Katie”)。输入以下信息:

    db.Employee1.find({name: "Katie"})

    以下输出显示:

    { "_id" : 4, "name" : "Katie", "lastname": "Schaper", "level": 3}

  7. 要查找配置文件并对其进行修改,请输入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, }
  8. 要验证级别提高,请输入以下查询:

    db.Employee1.find({name: "Matt"})

    以下输出显示:

    { "_id" : 1, "name" : "Matt", "lastname" : "winkle", "level" : 14 }