本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自动连接 Amazon EC2
主题
在设置 EC2 实例与新 Amazon DocumentDB 数据库之间的连接之前,请确保满足 与 EC2 实例的自动连接概述 中所述的要求。如果您在配置连接后更改安全组,则这些更改可能会影响 EC2 实例与 Amazon DocumentDB 数据库之间的连接。
注意
您只能使用 Amazon Web Services 管理控制台自动设置 EC2 实例与 Amazon DocumentDB 数据库之间的连接。您无法使用 Amazon CLI 或亚马逊 DocumentDB API 自动建立连接。
将 EC2 实例自动连接到新的 Amazon DocumentDB 数据库
下面的程序假定您已经完成 先决条件 主题中的步骤。
Steps
步骤 1:创建 Amazon EC2 实例
在这个步骤,您将在同一区域和 Amazon VPC 中创建一个 Amazon EC2 实例,稍后您将使用这个实例配置您的 Amazon DocumentDB 集群。
-
从 Amazon EC2 控制台控制中,选择启动实例。
-
在名称和标签部分的名称字段中,输入名称或标识符。
-
在亚马逊机器映像 (AMI) 下拉列表中,找到并选中 Amazon Linux 2 AMI。
-
在实例类型下拉列表中,找到并选中 t3.micro。
-
在密钥对(登录)部分,输入现有密钥对的标识符,或选择新建密钥对。
您必须提供 Amazon EC2 密钥对。
-
如果您的确有 Amazon EC2 密钥对:
-
选定一个密钥对,从列表中选择您的密钥对。
-
您必须有可用的私有密钥文件(.pem 或 .ppk 文件)才能登录 Amazon EC2 实例。
-
-
如果您没有 Amazon EC2 密钥对:
-
选择新建密钥对,随后出现创建密钥对对话框。
-
在密钥对名称字段中输入名称。
-
选择密钥对类型和私有密钥文件格式。
-
选择 Create key pair (创建密钥对)。
-
注意
为安全起见,我们强烈建议使用密钥对进行 EC2 实例的 SSH 和互联网连接。
-
-
可选:在网络设置部分的防火墙(安全组)下,选择创建安全组。
选择创建安全组(选中所有适用于您的 EC2 连接的流量允许规则)。
注意
如果您想要使用现有安全组,请按照 手动连接 Amazon EC2 中的说明进行操作。
-
在摘要部分中,查看 EC2 配置,如果配置正确,选择启动实例。
步骤 2:创建 Amazon DocumentDB 集群
在预配置 Amazon EC2 实例的同时,创建您的 Amazon DocumentDB 集群。
-
导航至 Amazon DocumentDB 控制台并且从导航窗格中选择集群。
-
选择创建。
-
将集群类型设置保留为默认的基于实例的集群。
-
在集群配置中,对于集群标识符,请输入唯一名称。请注意,无论如何输入,控制台都会将所有集群的名称更改为小写。
将引擎版本保留为默认值 5.0.0。
对于集群存储配置,请保留 Amazon DocumentDB 标准的默认设置。
-
在实例配置中:
对于数据库实例类,选择内存优化类(包括 r 类)(这是默认值)。
另一个实例选项是NVMe由支持的类。要了解更多信息,请参阅NVMe 支持的实例。
对于实例类,请选择符合您需求的实例类型。有关实例类的更详细说明,请参阅 实例类规格。
对于实例数量,请选择最能反映您的需求的数量。请记住,数字越低,成本越低,集群可以管理的 read/write 容量也越低。
-
对于连接,选择连接到 EC2 计算资源。这是您在步骤 1 中创建的 EC2 实例。
注意
连接到 EC2 计算资源会自动为 EC2 计算资源到 Amazon DocumentDB 集群的连接创建一个安全组。创建完集群后,如果想查看新创建的安全组,请导航到集群列表并选择集群的标识符。在连接和安全选项卡中,转到安全组,然后在安全组名称 (ID) 下找到您的安全组。它将包含集群的名称,其外观类似于此:
docdb-ec2-docdb-2023-12-11-21-33-41:i-0e4bb09985d2bbc4c (sg-0238e0b0bf0f73877)。 -
在身份验证部分中,输入主要用户的用户名,然后选择自行管理。输入密码,然后确认密码。
如果您改为在中选择 “托管” Amazon Secrets Manager,使用 Amazon DocumentDB 进行密码管理以及 Amazon Secrets Manager请参阅,了解更多信息。
-
选择创建集群。
步骤 3:连接 Amazon EC2 实例
要安装 Mongo Shell,您必须首先连接到您的 Amazon EC2 实例。安装 Mongo Shell 使您能够连接到并查询您的 Amazon DocumentDB 集群。完成以下步骤:
-
在 Amazon EC2 控制台上,导航到您的实例并且查看您刚才创建的实例是否正在运行。如果是,请单击实例 ID 选择实例。
-
选择连接。
-
连接方法有四个选项卡选项:Amazon EC2 Instance Connect、会话管理器、SSH 客户端或 EC2 Serial Console。您必须选择一个选项并遵循其说明。完成后,选择连接。
注意
如果您开始这次演练后自己的 IP 地址发生变化,或者您稍后正要返回您的环境,则必须更新您的 demoEC2 安全组入站规则,以启用来自新 API 地址的入站流量。
步骤 4:安装 MongoDB Shell
您现在可以安装 MongoDB Shell,它是一个命令行实用程序,用于连接和查询 Amazon DocumentDB 集群。目前有两个版本的 MongoDB Shell:最新版本 mongosh 和先前版本 mongo Shell。
重要
低于版本 6.13.1 的 Node.js 驱动程序存在已知限制,Amazon DocumentDB 目前不支持用这种驱动程序进行 IAM 身份验证。必须升级 Node.js 驱动程序以及使用 Node.js 驱动程序的工具(例如 mongosh),以使用 Node.js 驱动程序版本 6.13.1 或更高版本。
遵循以下说明为您的操作系统安装 MongoDB Shell。
步骤 5:管理 Amazon DocumentDB TLS
用以下代码下载 Amazon DocumentDB 的 CA 证书:wget https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/global/global-bundle.pem
注意
传输层安全性协议 (TLS)默认对所有新的 Amazon DocumentDB 集群启用。有关更多信息,请参阅管理 Amazon DocumentDB Cluster TLS 设置。
步骤 6:连接到 Amazon DocumentDB 集群
-
在 Amazon DocumentDB 数据库控制台上的集群下,定位您的集群。通过单击该集群的集群标识符,选择您创建的集群。
-
在连接和安全选项卡中,在连接方框中找到使用 mongo Shell 连接到此集群:
复制所提供的连接字符串,并将其粘贴到您的终端中。
对其进行以下更改:
确保字符串中的用户名正确。
省略
<insertYourPassword>从而 mongo Shell 在您连接时提示您输入密码。可选:如果您使用的是 IAM 身份验证,或者使用的是先前版本的 MongoDB Shell,请按以下方式修改您的连接字符串:
mongo ‐‐ssl ‐‐host docdb-2020-02-08-14-15-11.cluster.region.docdb.amazonaws.com:27017 ‐‐sslCAFile rds-combined-ca-cn-bundle.pem ‐‐username SampleUser1 ‐‐password将
docdb-2020-02-08-14-15-11.cluster.region替换为您的集群中的相同信息。
-
在您的终端中按回车。现在,系统将提示您输入密码。输入您的密码。
-
当输入密码并可以看到
rs0 [direct: primary] <env-name>>提示时,您已成功连接到您的 Amazon DocumentDB 集群。
连接时遇到问题? 参见 Amazon DocumentDB 故障排除。
步骤 7:插入和查询数据
现在,您已连接到自己的集群,您可以运行几个查询来熟悉如何使用文档数据库。
-
要插入单个文档,请输入以下内容:
db.collection.insertOne({"hello":"DocumentDB"})您会得到以下输出:
{ acknowledged: true, insertedId: ObjectId('673657216bdf6258466b128c') } -
您可以读取您用
findOne()命令编写过的文档(因为它只返回单个文档)。输入以下:db.collection.findOne()您会得到以下输出:
{ "_id" : ObjectId("5e401fe56056fda7321fbd67"), "hello" : "DocumentDB" } -
要执行若干更多查询,请考虑游戏个人资料用例。首先,将几个条目插入标题为
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 } ])您会得到以下输出:
{ acknowledged: true, insertedIds: { '0': 1, '1': 2, '2': 3, '3': 4 } } -
使用
find()命令返回个人资料集合中的所有文档。输入以下:db.profiles.find()您将获得与您在步骤 3 中键入的数据相匹配的输出。
-
利用筛选器对单个文档使用查询。输入以下:
db.profiles.find({name: "Katie"})您会得到以下输出:
{ "_id" : 4, "name" : "Katie", "status": "active", "level": 3, "score":27} -
现在,让我们尝试查找个人资料并使用
findAndModify命令修改它。我们将用以下代码向用户 Matt 给予额外的 10 分:db.profiles.findAndModify({ query: { name: "Matt", status: "active"}, update: { $inc: { score: 10 } } })你得到以下输出(请注意,他的分数尚未增加):
{ [{_id : 1, name : 'Matt', status: 'active', level: 12, score: 202}] -
你可以借助以下查询验证他的分数是否已变化:
db.profiles.find({name: "Matt"})您会得到以下输出:
{ "_id" : 1, "name" : "Matt", "status" : "active", "level" : 12, "score" : 212 }
步骤 8:探索
恭喜您!您已成功完成 Amazon DocumentDB 快速入门指南。
接下来做什么? 了解如何充分利用这款强大的数据库及其热门功能:
注意
为了节省成本,您可以停用您的 Amazon DocumentDB 集群以降低成本,也可以删除该集群。默认情况下,在闲置 30 分钟后,您的 Amazon Cloud9 环境将停止底层 Amazon EC2 实例。
将 EC2 实例自动连接到现有的 Amazon DocumentDB 数据库
下面的程序假定存在一个现有 Amazon DocumentDB 集群和一个现有 Amazon EC2 实例。
访问 Amazon DocumentDB 集群并设置 Amazon EC2 连接
-
访问 Amazon DocumentDB 集群。
登录 Amazon Web Services 管理控制台,然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com
-
在导航窗格中,选择集群。
提示
如果您在屏幕左侧没有看到导航窗格,请在页面左上角选择菜单图标 (
)。 -
通过选择集群名称左侧的按钮,指定需要的集群。
-
设置 Amazon EC2 连接。
-
选择操作,然后选择设置 EC2 连接。
将出现设置 EC2 连接页面。
-
在 EC2 实例字段中,选择要连接到集群的 EC2 实例。
-
选择继续。
将出现检查并确认页面。
-
确保更改正确。然后选择设置连接。
-
成功后会显示以下验证:
与 EC2 实例的自动连接概述
当您设置 EC2 实例和 Amazon DocumentDB 数据库之间的连接时,Amazon DocumentDB 会自动为您的 EC2 实例和 Amazon DocumentDB 数据库配置 VPC 安全组。
以下是将 EC2 实例与 Amazon DocumentDB 数据库连接的要求:
EC2 实例必须与 Amazon DocumentDB 数据库存在于同一 VPC 中。
如果同一 VPC 中不存在任何 EC2 实例,则控制台将提供创建一个此类实例的链接。
设置连接的用户必须具有执行以下 Amazon EC2 操作的权限:
ec2:AuthorizeSecurityGroupEgressec2:AuthorizeSecurityGroupIngressec2:CreateSecurityGroupec2:DescribeInstancesec2:DescribeNetworkInterfacesec2:DescribeSecurityGroupsec2:ModifyNetworkInterfaceAttributeec2:RevokeSecurityGroupEgress
如果数据库实例和 EC2 实例位于不同的可用区,则您的账户可能会产生跨可用区成本。
当您设置与 EC2 实例的连接时,Amazon DocumentDB 会根据与 Amazon DocumentDB 数据库和 EC2 实例关联的安全组的当前配置采取操作,如下表所述。
| 当前 Amazon DocumentDB 安全组配置 | 当前 EC2 安全组配置 | Amazon DocumentDB 操作 |
|---|---|---|
有一个或多个安全组与 Amazon DocumentDB 数据库关联,该数据库的名称与模式 DocumentDB-ec2-n 相匹配。尚未修改与此模式匹配的安全组。该安全组只具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。 |
有一个或多个安全组与 EC2 实例关联,此实例的名称与模式 DocumentDB-ec2-n(其中 n 是数字)相匹配。尚未修改与此模式匹配的安全组。该安全组只具有一条以 Amazon DocumentDB 数据库的 VPC 安全组作为源的出站规则。 |
Amazon DocumentDB 不执行任何操作。已在 EC2 实例和 Amazon DocumentDB 数据库之间自动配置了连接。由于 EC2 实例和 Amazon DocumentDB 数据库之间已经存在连接,因此不会修改安全组。 |
以下任一条件适用:
|
以下任一条件适用:
|
Amazon DocumentDB 操作:新建安全组 |
有一个或多个安全组与 Amazon DocumentDB 数据库关联,该数据库的名称与模式 DocumentDB-ec2-n 相匹配。尚未修改与此模式匹配的安全组。该安全组只具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。 |
有一个或多个安全组与 EC2 实例(名称与模式 ec2-DocumentDB-n 匹配)关联。但是,Amazon DocumentDB 不能将其中任何安全组用于连接 Amazon DocumentDB 数据库。如果安全组没有一条以 Amazon DocumentDB 数据库的 VPC 安全组作为源的出站规则,则 Amazon DocumentDB 无法使用该安全组。Amazon DocumentDB 也无法使用经过修改的安全组。 |
Amazon DocumentDB 操作:新建安全组 |
有一个或多个安全组与 Amazon DocumentDB 数据库关联,该数据库的名称与模式 DocumentDB-ec2-n 相匹配。尚未修改与此模式匹配的安全组。该安全组只具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。 |
存在用于连接的有效 EC2 安全组,但它与 EC2 实例不关联。此安全组的名称与模式 DocumentDB-ec2-n 相匹配。尚未修改它。它只具有一条以 Amazon DocumentDB 数据库的 VPC 安全组作为源的出站规则。 |
Amazon DocumentDB 操作:关联 EC2 安全组 |
以下任一条件适用:
|
有一个或多个安全组与 EC2 实例(名称与模式 DocumentDB-ec2-n 匹配)关联。尚未修改与此模式匹配的安全组。该安全组只具有一条以 Amazon DocumentDB 数据库的 VPC 安全组作为源的出站规则。 |
Amazon DocumentDB 操作:新建安全组 |
Amazon DocumentDB 操作:新建安全组
Amazon DocumentDB 执行以下操作:
创建与模式
DocumentDB-ec2-n匹配的新安全组。该安全组具有一条以 EC2 实例的 VPC 安全组作为源的入站规则。此安全组与 Amazon DocumentDB 数据库关联,并允许 EC2 实例访问 Amazon DocumentDB 数据库。创建与模式
ec2-DocumentDB-n匹配的新安全组。该安全组具有一条以 Amazon DocumentDB 数据库的 VPC 安全组作为源的出站规则。该安全组与 EC2 实例相关联,并允许 EC2 实例向 Amazon DocumentDB 数据库发送流量。
Amazon DocumentDB 操作:关联 EC2 安全组
Amazon DocumentDB 将有效的现有 EC2 安全组与 EC2 实例关联。该安全组允许 EC2 实例向 Amazon DocumentDB 数据库发送流量。
查看连接的计算资源
您可以使用 Amazon Web Services 管理控制台 来查看连接到 Amazon DocumentDB 数据库的计算资源。显示的资源包括自动设置的计算资源连接。您可以通过以下方式自动设置与计算资源的连接:
您可以在创建数据库时选择计算资源。有关更多信息,请参阅 创建 Amazon DocumentDB 集群 并创建多可用区数据库集群。
您可以在现有数据库和计算资源之间设置连接。有关更多信息,请参阅 自动连接 Amazon EC2。
列出的计算资源不包括手动连接到数据库的计算资源。例如,您可以通过向与数据库关联的 VPC 安全组添加规则来允许计算资源手动访问数据库。
要列出计算资源,必须满足以下条件:
与计算资源关联的安全组的名称与模式
ec2-DocumentDB-n相匹配(其中 n 是数字)。与计算资源关联的安全组具有出站规则,其端口范围设置为 Amazon DocumentDB 数据库使用的端口。
与计算资源关联的安全组具有出站规则,源设置为与 Amazon DocumentDB 数据库关联的安全组。
与 Amazon DocumentDB 数据库关联的安全组的名称与模式
DocumentDB-ec2-n(其中 n 是数字)相匹配。与 Amazon DocumentDB 数据库关联的安全组具有一条出站规则,其端口范围设置为 Amazon DocumentDB 数据库使用的端口。
与 Amazon DocumentDB 数据库关联的安全组有一条入站规则,其源设置为与计算资源关联的安全组。
查看已连接到 Amazon DocumentDB 数据库的计算资源
登录 Amazon Web Services 管理控制台,然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com
在导航窗格中,选择数据库,然后选择 Amazon DocumentDB 数据库的名称。
在连接和安全选项卡上,在连接的计算资源中查看计算资源。