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

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

开始使用 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 账户
  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. 选择直接附加策略

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

  7. 点击下一步按钮。

  8. 点击添加权限按钮。

创建 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,创建一个全新的弹性集群。

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 (备份)”窗格屏幕截图。
    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 加密密钥的 Amazon 资源名称(ARN)。如果使用拥有用于加密新集群的 KMS 加密密钥的同一 Amazon Web Services 账户创建集群,则可以使用 KMS 密钥别名而不是 KMS 加密密钥的 ARN。

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

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

  • --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 DocumentDB 集群的访问权限由其关联安全组进行控制。在此步骤中,您将修改 Amazon DocumentDB 安全组,以便通过弹性集群配置的端口(默认为 27017)与 Amazon EC2 实例通信。

  1. 在 Amazon DocumentDB 管理控制台上,集群下,定位您的集群。

    1. 通过单击集群标识符选择您已创建的集群。

    2. 连接和安全选项卡的安全部分中,选择 VPC 安全组

      这将打开 Amazon EC2 管理控制台的安全组列表。或者,可以访问 Amazon EC2 管理控制台,从网络和安全部分选择安全组

    3. 选择 Amazon DocumentDB(默认)安全组。

    图片:Amazon DocumentDB 安全组列表
  2. 选择入站规则选项卡(可能需要滚动到窗口底部),然后选择编辑入站规则

    图片:Amazon EC2 入站规则对话框
  3. 编辑入站规则对话框中,选择添加规则

    1. 对于端口范围,输入 27017

    2. 保留为自定义,然后搜索您从创建于 先决条件 中的 EC2 实例记录的安全组值。

    3. 选择保存规则

    图片:Amazon 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 连接到您的集群。

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

    图:弹性集群列表屏幕
  2. 通过选择集群标识符,选择您创建的集群。从连接和安全中,将您的端点复制并粘贴到 Amazon EC2 实例中。

    图:弹性集群连接屏幕
  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 }