亚马逊AWS官方博客

Amazon DocumentDB(兼容MongoDB)教程第三部分——使用 Robo 3T

Original URL: https://aws.amazon.com/cn/blogs/database/part-3-getting-started-with-amazon-documentdb-using-robo-3t/

 

Amazon DocumentDB(兼容MongoDB)是一项快速、可扩展、高可用性的全托管文档数据库服务,可支持MongoDB工作负载。您可以直接使用与MongoDB 3.6相同的应用程序代码、驱动程序及工具,实现在Amazon DocumentDB上运行、管理与扩展工作负载,且完全不必管理底层基础设施。作为一个文档数据库,Amazon DocumentDB使得存储、查询和索引 JSON 数据变得简单。

在本系列文章的第三篇中,我们将介绍如何上手使用Amazon Document DB与Robo 3T(原名Robomongo)。Robo 3T是一款轻量化、开源、以shell为中心的跨平台图形用户界面工具,专门用于管理各类MongoDB工作负载。Robo 3T能够帮助我们创建数据库、集合、添加用户、文档、使用自动补齐功能执行一次性查询并通过GUI界面显示结果,进而极大提升生产效率。

在本文的演练中,我们将在VPC中创建一个单实例Amazon DocumentDB集群,在该VPC内另外创建一个EC2 Linux虚拟机,并在两者之间建立SSH隧道,使用Robo 3T接入该集群,并使用本地计算机向其发送几项查询。下图所示,为本次演练的最终架构。

创建Amazon DocumentDB集群

您可以使用AWS命令行界面(AWS CLI)或者AWS管理控制台创建Amazon DocumentDB集群。如果您已经拥有集群,可以直接跳过这一步。

使用AWS CLI创建集群

要使用AWS CLI以默认配置创建集群,请在Linux、MacOS及Unix系统上使用以下代码:

aws docdb create-db-cluster \
      --db-cluster-identifier sample-cluster \
      --engine docdb \
      --deletion-protection \
      --master-username master-user \
      --master-user-password password

在Windows平台上,请使用以下代码:

aws docdb create-db-cluster ^
      --db-cluster-identifier sample-cluster ^
      --engine docdb ^
      --deletion-protection ^
      --master-username master-user ^
      --master-user-password password

在控制台上创建集群

要在控制台上以默认设置创建集群,请完成以下步骤:

  1. 在Amazon DocumentDB控制台的Clusters下,选择Create。
  2. Create Amazon DocumentDB cluster页面中的Number of instances部分,选择1以尽可能压低成本。
  3. 其他设置可直接保留默认选项。
  4. 在Authentication部分,输入用户名及密码。
  5. 选择Create cluster
  6. 为集群的安全组启用入站连接。 要向集群安全组添加入站连接,我们需要:
    • a. 登录至AWS管理控制台,而后在https://console.aws.amazon.com/ec2/上打开Amazon EC2控制台。
    • b. 在主窗口中的Resources部分,选择Security groups。
    • c. 从安全组列表当中选定您在创建集群时使用的安全组(大多数情况下为default安全组),而后选中该安全组名称左侧的勾选框。
    • d. 在Actions菜单中,选择Edit inbound rules,而后选择或输入具体规则。
      • Type(类型)——从列表中选择向网络流量开放的协议。
      • Protocol(协议)——从列表当中选择协议类型。
      • Port Range(端口范围)——对于自定义规则,请输入端口号或端口范围。请确保输入的端口号或范围,包含您在创建集群时所指定的端口(默认为27017)。
      • Source(源)——指定可传入您实例的流量。从列表中选择要放行的流量源。如果您选择Custom,则需要以CIDR表示形式指定单一IP地址或者一组IP地址范围(例如203.0.113.5/32)。
      • Description(描述)——输入此项规则的描述。
      • 在规则创建完成之后,选择Save进行保存。

启动EC2实例

Amazon DocumentDB集群会被部署在Amazon Virtual Private Cloud(Amazon VPC)当中。我们可以通过Amazon Elastic Compute Cloud(Amazon EC2)实例或者部署在同一Amazon VPC中的其他AWS服务,直接访问这些Amazon DocumentDB集群。要使用Robo 3T从客户端计算机(Windows、MacOS或Linux)接入集群,首先需要一个与Amazon DocumentDB集群处于同一VPC及安全组的Linux EC2实例。在后续演练步骤中,我们将具体了解如何创建一条由本地笔记本电脑通过EC2实例接入集群的SSH隧道。您可以直接使用与集群处于同一VPC及安全组的现有EC2实例,也可以在集群所在VPC及安全组内创建新的免费Linux EC2实例。关于更多详细信息,请参阅Amazon EC2 Linux实例入门教程

使用Robo 3T进行连接

如果您还没有部署Robo 3T,请首先点击此处完成下载。截至本文撰写时,最新Robo 3T为1.3版本。如果您已经部署有Robo 3T,可以直接跳过此部分。

  1. 打开Robo 3T并选择Create
  2. 从集群处复制集群终端节点。
  3. 在Connection选项卡中,输入集群终端节点信息。
  4. 在Authentication选项卡中,输入集群的身份验证信息。请务必使用“test”或“testdb”等自定义数据库名称。对于还没有创建数据库的DocumentDB集群,我们无法直接使用“admin”(默认设置)数据库名称。只有在完成首个数据库的创建之后,我们才能修改连接信息来使用“admin”数据库。
  5. 在SSH选项卡中,选中“Use SSH tunnel”的复选框,而后添加我们EC2实例的SSH地址、用户名与私钥/密码。SSH地址即您EC2实例的公共DNS。如果您使用私钥创建EC2实例,请保证在Robo 3T SSH隧道当中使用相同的密钥。您可以从AWS EC2控制台处获取SSH地址、用户名与私钥。如果您使用的是Linux/MacOS客户端计算机,可能需要使用以下命令以变更私钥权限:
    > chmod 400 /fullPathToYourPemFile/<yourKey>.pem
  6. 在SSL选项卡中,添加Amazon DocumentDB证书。
  7. 选择Advanced Options。
  8. 在Invalid Hostnames部分,选择Allowed。 我们可以使用以下命令下载证书:
    > wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

    如果您还没有wget,也可以直接通过网络浏览器访问URL并直接下载证书。

  9. 要测试此连接,请选择Test。 测试结果将显示在Diagnostic窗口当中。
  10. 选择Close
  11. 选择Save
  12. 选定您的集群并选择Connect。
  13. 在集群对应下拉菜单的Collections下,选择Create Collection。
  14. 选择Insert Document并插入一个文档。
  15. 通过Robo 3T运行您的第一项Amazon DocumentDB查询。

关于Robo 3T功能的更多详细信息,请参阅项目GitHub repo

资源清理

在完成本轮演练之后,您可以关停Amazon DocumentDB集群,或者将其彻底删除,借此节约资源成本。

总结

在本文中,我们了解了如何使用Robo 3T接入Amazon DocumentDB集群。在Robo 3T与Amazon DocumentDB集群之间建立连接之后,我们即可进一步创建数据库、集合与索引;插入文档;并通过工具对集群发起查询。关于更多高级功能,例如就地查询编辑、MongoDB上的SQL查询、可视化查询构建器、聚合编辑器以及schema浏览器等,请参阅Studio 3T发布的相关说明。

关于本地计算机如何开始使用Amazon DocumentDB的更多详细信息,请参阅 Amazon DocumentDB(兼容MongoDB)教程第一部分——使用Amazon EC2 以及 Amazon DocumentDB(兼容MongoDB)教程第二部分——使用AWS Cloud9。关于新近发布的更多说明及博文,请参阅Amazon DocumentDB (兼容MongoDB) 资源汇总

 

本篇作者

Meet Bhagdev

Amazon Web Services公司高级产品经理。