手动连接 Amazon EC2 - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

手动连接 Amazon EC2

以下步骤假设您已完成先决条件主题中的步骤。

步骤 1:创建 Amazon EC2 实例

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

  1. 从 Amazon EC2 控制台控制中,选择启动实例

  2. 在名称和标签部分的名称字段中输入名称或标识符。

  3. 亚马逊系统映像 (AMI) 下拉列表中,找到亚马逊 Linux 2 AMI 并将其选中。

  4. 实例类型下拉列表中找到并选择 t3.micro

  5. 在 “密钥对(登录)” 部分中,输入现有密钥对的标识符,或选择 “创建新密钥对”。

    您必须提供 Amazon EC2 密钥对。

    如果您的确有 Amazon EC2 密钥对:

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

    2. 您必须已经拥有私钥文件(.pem 或.ppk 文件)才能登录您的 Amazon EC2 实例。

    如果您没有 Amazon EC2 密钥对:

    1. 选择 “创建新密钥对”,将出现 “创建密钥对” 对话框。

    2. 密钥对名称字段中输入名称

    3. 选择密钥对类型私钥文件格式

    4. 选择 Create key pair (创建密钥对)

    注意

    出于安全考虑,我们强烈建议使用密钥对与 EC2 实例进行 SSH 和互联网连接。

  6. 网络会议部分的防火墙(安全组)下,选择创建安全组选择现有安全组

    如果您选择选择现有安全组,请从通用安全组下拉列表中选择一个安全组

    如果您选择创建新的安全组,请执行以下操作:

    1. 检查适用于您的 EC2 连接的所有流量允许规则。

    2. 在 IP 字段中,选择我的 IP 或选择自定义,从 CIDR 块、前缀列表或安全组列表中进行选择。除非您的 EC2 实例位于隔离网络上,否则我们不建议将 Any where 作为选择,因为它允许任何 IP 地址访问您的 EC2 实例。

  7. 在 “摘要” 部分,查看您的 EC2 配置,如果正确,请选择 “启动实例”。 编辑安全组

步骤 2:创建安全组

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

  1. Amazon EC2 管理控制台上,网络和安全下,选择安全组

  2. 选择创建安全组

  3. 在 “基本详情” 部分中:

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

    2. 对于说明,输入说明。

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

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

    1. 对于 Type(类型),选择 Custom TCP Rule(自定义 TCP 规则)

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

    3. 对于目标类型,选择自定义。在紧邻它的字段中,搜索您刚才调用过的安全组 demoEC2。您可能需要刷新浏览器以便 Amazon EC2 控制台自动填充 demoEC2 来源名称。

  5. 接受所有其他默认值并选择创建安全组

步骤 3:创建 Amazon DocumentDB 集群

正在预配置 Amazon EC2 实例的同时,您将创建自己的 Amazon DocumentDB 集群。

  1. 导航至 Amazon DocumentDB 控制台并且从导航窗格中选择集群

  2. 选择 创建

  3. 将 “集群类型” 设置保留为默认的 “基于实例的集群”。

  4. 对于实例数,选择1。这将使成本最小化。将其他设置保留为默认值。

  5. 对于 “连接”,保留默认设置 “不要连接到 EC2 计算资源”。

    注意

    连接到 EC2 计算资源会自动为您的 EC2 计算资源与集群的连接创建安全组。由于您在上一步中手动创建了这些安全组,因此应选择不要连接到 EC2 计算资源,以免创建第二组安全组。

  6. 对于身份验证,请输入登录凭证。重要提示:在后续步骤中,您将需要登录凭证来对您的集群进行身份验证。

  7. 开启显示高级设置

  8. 网络设置 部分中,对于 Amazon VPC 安全组,选择 DemodocDB

  9. 选择创建集群

第 4 步:配置 Amazon EC2 实例

要安装 Mongo Shell,您必须首先连接到您的 Amazon EC2 实例。安装 Mongo Shell 使您能够连接到并查询您的 Amazon DocumentDB 集群。完成以下步骤:

  1. 在 Amazon EC2 控制台上,导航到您的实例并且查看您刚才创建的实例是否正在运行。如果是,请通过单击实例 ID 来选择实例。

  2. 选择连接

  3. 您的连接方法有四个选项卡:Amazon EC2 Instance Connect、会话管理器、SSH 客户端或 EC2 串行控制台。您必须选择一个选项并遵循其说明。完成后,选择 Connect

注意

如果您开始这次演练后自己的 IP 地址变化,或者您稍后正要返回您的环境,则必须更新您的demoEC2 安全组入站规则,以启用来自您新 API 地址的入站流量。

步骤 5:安装 mongo shell

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

On Amazon Linux
在 Amazon Linux 上安装 mongo shell
  1. 创建存储库文件。在 EC2 实例的命令提示符处,键入以下命令:

    echo -e "[mongodb-org-5.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/5.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
  2. 完成后,通过执行以下命令安装 mongo shell:

    sudo yum install -y mongodb-org-shell
On Ubuntu 18.04
在 Ubuntu 18.04 上安装 mongo shell
  1. 导入包管理系统将使用的公有密钥。

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

    Ubuntu 18.04

    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. 使用以下命令重新加载本地程序包数据库:

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

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

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

 

On other operating systems

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

步骤 6:管理 Amazon DocumentDB TLS

用以下代码下载 Amazon DocumentDB 的 CA 证书:wget https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/global/global-bundle.pem

注意

传输层安全性协议 (TLS)默认对所有新的 Amazon DocumentDB 集群启用。有关更多信息,请参阅管理亚马逊文档数据库集群 TLS 设置

步骤 7:连接到 Amazon DocumentDB 集群

  1. 在 Amazon DocumentDB 控制台的 “集群” 下,找到您的集群。通过单击集群标识符选择您创建的集群

  2. 在 “连接和安全” 选项卡中,在 “连接” 框中找到 “使用 mongo shell 连接到此集群”:

    复制提供的连接字符串并将其粘贴到您的终端中。

    对其进行以下更改:

    1. 确保字符串中的用户名正确。

    2. 省略,<insertYourPassword>这样 mongo shell 就会在你连接时提示你输入密码。

    您的连接字符串应与以下类似:

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

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

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

连接时遇到问题? 参见 Amazon DocumentDB 故障排除

步骤 8:插入和查询数据

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

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

    db.collection.insert({"hello":"DocumentDB"})
  2. 您会得到以下输出:

    WriteResult({ "nInserted" : 1 })

  3. 您可以读取您用 findOne() 命令编写过的文档(因为它只返回单个文档)。输入以下:

    db.collection.findOne()
  4. 您会得到以下输出:

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

  5. 要执行若干更多查询,请考虑游戏个人资料用例。首先,将几个条目插入标题为 profiles 的集合。输入以下:

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

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

  7. 使用 find() 命令返回个人资料集合中的所有文档。输入以下:

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

  9. 利用筛选器对单个文档使用查询。输入以下:

    db.profiles.find({name: "Katie"})
  10. 您应该收回这个输出:

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

  11. 现在,让我们尝试查找个人资料并使用 findAndModify 命令修改它。我们将用以下代码向用户 Matt 给予额外的十分:

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

    { "_id" : 1, "name" : "Matt", "status" : "active", "level" : 12, "score" : 202 }
  13. 你可以借助以下查询验证他的分数是否已变化:

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

  14. 您会得到以下输出:

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

步骤 9:探索

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

接下来做什么? 了解如何充分利用这款强大的数据库及其热门功能:

注意

为了节省成本,您可以停用您的 Amazon DocumentDB 集群以降低成本,也可以删除该集群。默认情况下,在闲置 30 分钟后,您的 Amazon Cloud9 环境将停止底层 Amazon EC2 实例。