使用 Amazon EC2 进行连接

本节介绍如何使用 Amazon DocumentDB(与 MongoDB 兼容) 启动 Amazon EC2 集群,并使用 mongo shell 与其进行交互。以下视频演示了本指南中的步骤。

Prerequisites

在创建第一个 Amazon DocumentDB 集群之前,您必须执行以下操作:

创建一个 Amazon Web Services (AWS) 账户

开始使用 Amazon DocumentDB 之前,您必须具有 Amazon Web Services (AWS) 账户。AWS 账户是免费的。您只需为使用的服务和资源付费。

如果您没有 AWS 账户,请通过以下步骤创建一个账户。

注册 AWS

  1. 打开 https://aws.amazon.com/,然后选择 Create an AWS Account

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

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

访问以管理 Amazon DocumentDB资源(如集群、实例和集群参数组)时需要提供 AWS 可用来验证请求身份的凭证。有关更多信息,请参阅Amazon DocumentDB 中的 Identity and Access Management

  1. 在AWS管理控制台的搜索栏中,键入 IAM 并选择 iam 在显示的下拉菜单中。

  2. 一旦您在 IAM 控制台,选择 用户 从导航窗格。

  3. 选择您的用户名。

  4. 点击按钮 添加权限.

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

  6. 类型 AmazonDocDBFullAccess 在搜索栏中,并在搜索结果中显示一次。

  7. 点击下面的蓝色按钮 下一步: 审核

  8. 点击下面的蓝色按钮 添加权限.

创建一个 Amazon Virtual Private Cloud (Amazon VPC)

根据您所在的 AWS 区域,您可能尚未创建默认 VPC,也可能未创建默认 VPC。如果您没有默认 VPC,请完成 Amazon VPC 中的 入门的步骤 1。Amazon VPC 用户指南这将需要不到 5 分钟的时间。

步骤 1:创建 Amazon EC2 实例

在此步骤中,您将在稍后用于预置 Amazon EC2 集群的同一区域和 Amazon VPC 中创建 Amazon DocumentDB 实例。

  1. 在 Amazon EC2 控制台上,选择 Launch instance (启动实例)

    使用 Amazon EC2 进行连接 - 图1

  2. 找到 Amazon Linux 2 AMI,然后选择 Select (选择)

    使用 Amazon EC2 进行连接 - 图2

  3. 选择 t3.micro 实例类型。

    使用 Amazon EC2 进行连接 - 图3

  4. 选择 Review and Launch,这将允许您跳到 控制台的 Step 7:。 Review Instance Launch (查看实例启动) 页面。

    使用 Amazon EC2 进行连接 - 图4

  5. 在安全组下,选择 Edit security groups (编辑安全组)

    使用 Amazon EC2 进行连接 - 图5

  6. 这将默认为 Create a new security group (创建新安全组)。在 Security group name (安全组名称) 字段中,写入 demoEC2

    使用 Amazon EC2 进行连接 - 图6

  7. 将类型更改为 SSH。这会自动将端口范围设置为 22。

    使用 Amazon EC2 进行连接 - 图7

  8. 选择 Source (源) 下拉菜单,然后选择 My IP (我的 IP)

    使用 Amazon EC2 进行连接 - 图8

    注意

    您只能从当前 IP 地址访问 demoEC2 安全组。如果您的 IP 地址更改,则必须更新安全组。

  9. 现在,选择 Review and Launch。您现在应在 demoEC2Security Groups (安全组) 部分中看到 安全组。

    使用 Amazon EC2 进行连接 - 图9

  10. 验证信息并选择 Launch

    使用 Amazon EC2 进行连接 - 图10

  11. 此时会弹出标题为 Select an existing key pair or create a new key pair 的窗口。它将如下所示:

    使用 Amazon EC2 进行连接 - 图11

    您必须提供 Amazon EC2 密钥对。如果您确实有一个 Amazon EC2 密钥对:

    1. 选择一个密钥对,从列表中选择您的密钥对。

    2. 您必须有可用的私有密钥文件(.pem 文件)才能登录 Amazon EC2 实例。

    如果您没有 Amazon EC2 密钥对:

    1. 选择 Create a new key pair

    2. Key pair name 字段中为密钥栏编写名称。

    3. 下载私有密钥文件(.pem 文件)。稍后在登录 Amazon EC2 实例时,您将需要此文件。

  12. 选择 Launch Instances

    使用 Amazon EC2 进行连接 - 图12

步骤 2:创建安全组

现在,您将在默认 Amazon VPC 中创建一个新的安全组。安全组 demoDocDB 允许您从 Amazon DocumentDB 实例连接到端口 27017(Amazon DocumentDB 的默认端口)上的 Amazon EC2 集群。

  1. 在 Amazon EC2 控制台上的 Network and Security (网络与安全性) 下,选择 Security groups (安全组)

    使用 Amazon EC2 进行连接 - 图13

  2. 选择创建安全组

    使用 Amazon EC2 进行连接 - 图14

  3. 对于安全组名称,输入 demoDocDB

    使用 Amazon EC2 进行连接 - 图15

  4. 对于 Description (说明),输入说明。

    使用 Amazon EC2 进行连接 - 图16

  5. 对于 VPC,接受您的默认 VPC 的使用。

  6. 入站规则部分中,选择添加规则

    使用 Amazon EC2 进行连接 - 图17

  7. 对于 Type,选择 Custom TCP Rule

    使用 Amazon EC2 进行连接 - 图18

  8. 对于 Port range (端口范围),输入 27017

    使用 Amazon EC2 进行连接 - 图19

  9. 对于“Destination”(目标),选择 Custom (自定义)。在它旁边的字段中,搜索刚创建的安全组(名为 demoEC2)。 您可能需要刷新 Amazon EC2 控制台的浏览器以自动填充 demoEC2 源名称。

    使用 Amazon EC2 进行连接 - 图20

  10. 接受所有其他默认值,然后选择 Create security group (创建安全组)

    使用 Amazon EC2 进行连接 - 图21

步骤 3:创建 Amazon DocumentDB 集群

在预配置 Amazon EC2 实例的过程中,您将创建 Amazon DocumentDB 集群。

  1. 导航到 Amazon DocumentDB 控制台,然后从导航窗格中选择 Clusters (集群)

    使用 Amazon EC2 进行连接 - 图22

  2. 选择创建.

    使用 Amazon EC2 进行连接 - 图23

  3. 对于 Number of instances (实例数),选择 1。这将最大程度地降低成本。将其他设置保留为默认值。

    使用 Amazon EC2 进行连接 - 图24

  4. 对于 Authentication (身份验证),请输入用户名和密码。重要提示:在后面的步骤中,您将需要此用户名和密码来对集群进行身份验证。

    使用 Amazon EC2 进行连接 - 图25

  5. 打开 Show advanced settings

    使用 Amazon EC2 进行连接 - 图26

  6. Network settings 部分中,对于 Amazon VPC security groups,选择 demoDocDB

    使用 Amazon EC2 进行连接 - 图27

  7. 选择 Create Cluster (创建集群).

    使用 Amazon EC2 进行连接 - 图28

步骤 4:连接到您的 Amazon EC2 实例

要安装 mongo shell,您必须先连接到您的 Amazon EC2 实例。安装 mongo shell 后,您可以连接到 Amazon DocumentDB 集群并查询该集群。完成以下步骤:

  1. 在 Amazon EC2 控制台上,导航到您的实例,查看您刚刚创建的实例是否在运行。如果是这样,请选择实例

    使用 Amazon EC2 进行连接 - 图29

  2. 选择 Connect

    使用 Amazon EC2 进行连接 - 图30

  3. 您将看到连接方法的三个选项:Amazon EC2实例连接、会话管理器或 SSH 客户端。您必须选择一个策略并按照其说明进行操作。

    使用 Amazon EC2 进行连接 - 图31

注意

如果在开始本演练后您的 IP 地址发生了更改,或者您以后返回到您的环境,则必须更新您的 demoEC2 安全组入站规则以启用来自新 API 地址的入站流量。

步骤 5:安装 mongo shell

您现在可以安装 mongo shell,这是用于连接和查询 Amazon DocumentDB 集群的命令行实用程序。按照以下说明为您的操作系统安装 mongo shell。

在 Amazon Linux 上安装 mongo shell

  1. 创建存储库文件。在 EC2 实例的命令行中,执行以下命令:

    1. 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
  2. 完成后,通过执行以下命令安装 mongo shell:

    1. sudo yum install -y mongodb-org-shell

在 Ubuntu 18.04 上安装 mongo shell

  1. 导入包管理系统将使用的公有密钥。

    1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
  2. 使用适合您的 Ubuntu 版本的命令为 /etc/apt/sources.list.d/mongodb-org-3.6.list 创建列表文件 MongoDB。

    Ubuntu 18.04

    1. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

    注意

    以上命令将同时为 Bionic 和 Xenial 安装 mongo 3.6 shell。

  3. 使用以下命令重新加载本地程序包数据库:

    1. sudo apt-get update
  4. 安装 MongoDB shell。

    1. sudo apt-get install -y mongodb-org-shell

有关在 Ubuntu 系统上安装早期版本的 MongoDB 的信息,请参阅在 Ubuntu 上安装 MongoDB Community Edition

要在其他操作系统上安装 mongo shell,请参阅 文档中的MongoDB安装 Community EditionMongoDB。

步骤 6:管理 Amazon DocumentDB TLS

使用以下代码下载 Amazon DocumentDB 的 CA 证书:wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

注意

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

步骤 7:连接到您的 Amazon DocumentDB 集群

  1. 在 Amazon 文档数据库控制台上的“集群”下,找到您的集群。选择您创建的集群。

    使用 Amazon EC2 进行连接 - 图32

  2. 导航到 Connection (连接) 框。它将如下所示。

    使用 Amazon EC2 进行连接 - 图33

    复制提供的连接字符串。

    使用 Amazon EC2 进行连接 - 图34

    将终端粘贴到终端并对终端进行以下更改后:首先,确保您在字符串中拥有正确的用户名。然后,忽略 <insertYourPassword>,以便在连接时让 mongo shell 提示您输入密码。您的连接字符串应类似于以下内容:

    mongo --ssl host docdb-2020-02-08-14-15-11. cluster.region.docdb.amazonaws.com:27107 --sslCAFile rds-combined-ca-bundle.pem --username demoUser --password

  3. 现在,在您的终端中按 Enter。现在,系统将提示您输入密码。输入您的密码。

  4. 当您输入密码并可以看到 rs0:PRIMARY> 提示符时,表示您已成功连接到 Amazon DocumentDB 集群。

是否有连接问题? 请参阅 问题排查Amazon DocumentDB。

步骤 8:插入并查询数据

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

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

    1. db.collection.insert({"hello":"DocumentDB"})
  2. 您将获得以下输出:

    WriteResult({ "nInserted" : 1 })

  3. 您可以阅读您使用 findOne() 命令编写的文档(因为它仅返回单个文档)。输入以下内容:

    1. db.collection.findOne()
  4. 您将获得以下输出:

    { "_id" : ObjectId("5e401fe56056fda7321fbd67"), "hello" : "DocumentDB" }

  5. 要执行更多查询,请考虑一个游戏配置文件使用案例。首先,将一些条目插入标题为 profiles 的集合中。 输入以下内容:

    1. db.profiles.insertMany([
    2. { "_id" : 1, "name" : "Matt", "status": "active", "level": 12, "score":202},
    3. { "_id" : 2, "name" : "Frank", "status": "inactive", "level": 2, "score":9},
    4. { "_id" : 3, "name" : "Karen", "status": "active", "level": 7, "score":87},
    5. { "_id" : 4, "name" : "Katie", "status": "active", "level": 3, "score":27}
    6. ])
  6. 您将获得以下输出:

    { "acknowledged" : true, "insertedIds" : [ 1, 2, 3, 4 ] }

  7. 使用 find() 命令返回配置文件集合中的所有文档。输入以下内容:

    1. db.profiles.find()
  8. 您将获得与在步骤 5 中键入的数据相匹配的输出。

  9. 通过筛选条件对单个文档使用查询。输入以下内容:

    1. db.profiles.find({name: "Katie"})
  10. 您应获得此输出:

    { "_id" : 4, "name" : "Katie", "status": "active", "level": 3, "score":27}

  11. 现在,让我们尝试使用 findAndModify 命令查找并修改配置文件。我们将向用户提供额外十个点,包含以下代码:

    1. db.profiles.findAndModify({
    2. query: { name: "Matt", status: "active"},
    3. update: { $inc: { score: 10 } }
    4. })
  12. 您获得以下输出(请注意,他的分数尚未增加):

    1. {
    2. "_id" : 1,
    3. "name" : "Matt",
    4. "status" : "active",
    5. "level" : 12,
    6. "score" : 202
    7. }
  13. 您可以通过以下查询来验证其分数是否已更改:

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

  14. 您将获得以下输出:

    { "_id" : 1, "name" : "Matt", "status" : "active", "level" : 12, "score" : 212 }

步骤 9:了解

恭喜您!您已成功完成 Amazon DocumentDB 快速入门指南。

接下来做什么? 了解如何借助此强大的数据库的一些常用功能充分利用此数据库:

注意

要节省成本,您可以停止 Amazon DocumentDB 集群以降低成本,也可以删除该集群。默认情况下,在处于不活动状态 30 分钟后,您的 AWS Cloud9 环境将停止基础 Amazon EC2 实例。