创建 Aurora PostgreSQL 数据库集群并连接到该集群
本教程创建一个 EC2 实例和一个 Aurora PostgreSQL 数据库集群。本教程向您展示如何使用标准 PostgreSQL 客户端从 EC2 实例访问数据库集群。作为最佳实践,本教程在虚拟私有云(VPC)中创建私有数据库集群。在大多数情况下,同一 VPC 中的其他资源(例如 EC2 实例)可以访问数据库集群,但 VPC 之外的资源无法访问该集群。
完成本教程后,VPC 的每个可用区中都有一个公有和私有子网。在一个可用区中,EC2 实例在公有子网中,数据库实例在私有子网中。
重要
创建 AWS 账户并不会收费;但是,在完成本教程过程中使用AWS资源可能会产生费用。完成本教程后,如果不再需要这些资源,可以将其删除。
下图显示了教程完成时的配置。
本教程可帮助您通过以下方法之一创建资源:
-
使用 AWS Management Console ‑ 步骤 1:创建 EC2 实例 和 步骤 2:创建 Aurora PostgreSQL 数据库集群
-
使用 AWS CloudFormation 创建数据库实例和 EC2 实例 - (可选)使用 AWS CloudFormation 创建 VPC、EC2 实例和 Aurora PostgreSQL 集群
第一种方法使用轻松创建,通过 AWS Management Console 创建私有 Aurora PostgreSQL 数据库集群。您可以仅指定数据库引擎类型、数据库实例大小和数据库集群标识符。轻松创建为其他配置选项使用默认设置。
如果使用标准创建,则可以在创建数据库集群时指定更多配置选项。这些选项包括可用性、安全性、备份和维护设置。要创建公有数据库集群,必须使用标准创建。有关信息,请参阅创建 Amazon Aurora 数据库集群。
主题
先决条件
在开始之前,请完成以下各节中的步骤:
步骤 1:创建 EC2 实例
创建将用于连接到数据库的 Amazon EC2 实例。
创建 EC2 实例
登录到 AWS Management Console 并打开 Amazon EC2 控制台(https://console.aws.amazon.com/ec2/
)。 -
在 AWS Management Console的右上角,选择要在其中创建 EC2 实例的 AWS 区域。
-
选择 EC2 控制面板,然后选择启动实例,如下图所示。
启动实例页面打开。
-
在启动实例页面上选择以下设置。
-
在 Name and tags(名称和标签)下,对于 Name(名称),输入
ec2-database-connect
。 -
在应用程序和操作系统映像(Amazon 机器映像)下,选择 Amazon Linux,然后选择 Amazon Linux 2023 AMI。对于其他选项,保留默认选择。
-
在 Instance type(实例类型)下,选择 t2.micro。
-
在 Key pair (login) [密钥对(登录)] 下,选择 Key pair name(密钥对名称)以使用现有密钥对。要为 Amazon EC2 实例创建新的密钥对,请选择 Create new key pair(创建新的密钥对),然后使用 Create key pair(创建密钥对)窗口来创建它。
有关创建新的密钥对的更多信息,请参阅《Amazon EC2 用户指南》中的创建密钥对。
-
对于网络设置中的允许 SSH 流量,选择 EC2 实例的 SSH 连接来源。
如果显示的 IP 地址对于 SSH 连接是正确的,您可以选择 My IP(我的 IP)。否则,您可以确定要用来通过 Secure Shell(SSH)连接到 VPC 中的 EC2 实例的 IP 地址。要确定您的公有 IP 地址,请在新的浏览器窗口或标签页中,使用 https://checkip.amazonaws.com
上的服务。IP 地址的示例为 192.0.2.1/32。 在许多情况下,您可能通过互联网服务提供商(ISP)进行连接,或者在不使用静态 IP 地址的情况下从防火墙之后进行连接。如果是这样,请确保确定客户端计算机使用的 IP 地址范围。
警告
如果您使用
0.0.0.0/0
进行 SSH 访问,则所有 IP 地址可能能够使用 SSH 访问您的公有 EC2 实例。在测试环境下短时间内,此方法尚可接受,但它对于生产环境并不安全。在生产环境中,将仅向特定 IP 地址或地址范围授权使用 SSH 访问您的 EC2 实例。下图显示了网络设置部分的示例。
-
对于其余部分保留默认值。
-
查看摘要面板中您的 EC2 实例配置的摘要,当您准备好后,选择启动实例。
-
-
在启动状态页面上,记下新 EC2 实例的标识符,例如:
i-1234567890abcdef0
。 -
选择 EC2 实例标识符以打开 EC2 实例列表,然后选择您的 EC2 实例。
-
在详细信息选项卡中,记下使用 SSH 进行连接时所需的以下值:
-
在实例摘要中,记下公有 IPv4 DNS 的值。
-
在实例详细信息中,记下密钥对名称的值。
-
-
等待 EC2 实例的实例状态变为正在运行,然后继续。
步骤 2:创建 Aurora PostgreSQL 数据库集群
在该示例中,您使用轻松创建来创建一个具有 db.t4g.large 数据库实例类的 Aurora PostgreSQL 数据库集群。
使用“轻松创建”来创建 Aurora PostgreSQL 数据库集群
-
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 在 Amazon RDS 控制台的右上角,选择要在其中创建数据库集群的 AWS 区域。
-
在导航窗格中,选择 Databases(数据库)。
-
选择创建数据库,并确保已选择轻松创建。
-
在配置中,对于引擎类型,选择 Aurora(PostgreSQL 兼容)。
-
对于数据库实例大小,选择设备/测试。
-
对于数据库集群标识符,输入
database-test1
。创建数据库页面应类似于以下图像。
-
对于主用户名,输入用户的名称,或者保留默认名称(
postgres
)。 -
要为数据库集群使用自动生成的主密码,请选择自动生成密码。
要输入主密码,请确保清除自动生成密码,然后在主密码和确认密码中输入相同的密码。
-
要设置与您之前创建的 EC2 实例的连接,请打开设置 EC2 连接 - 可选。
选择连接到 EC2 计算资源。选择您之前创建的 EC2 实例。
-
打开查看轻松创建的默认设置。
您可以检查在启用 Easy create (轻松创建) 时使用的默认设置。可在创建数据库后编辑列显示在创建数据库后可以更改的选项。
-
如果该列中的某个设置为否,而您想要不同的设置,则可以使用标准创建来创建数据库集群。
-
如果某个设置在该列中为是,而您想要不同的设置,您可以使用标准创建来创建数据库集群,也可以在创建后修改数据库集群以更改该设置。
-
-
选择创建数据库。
要查看数据库集群的主用户名和密码,请选择查看凭证详细信息。
您可以使用显示的用户名和密码,以主用户身份连接到数据库集群。
重要
您无法再次查看主用户密码。如果您不记录它,您可能需要更改它。
如果需要在数据库集群可用后更改主用户密码,则可以修改数据库集群以执行此操作。有关修改数据库集群的更多信息,请参阅 修改 Amazon Aurora 数据库集群。
-
在数据库列表中,选择新的 Aurora PostgreSQL 数据库集群的名称以显示其详细信息。
写入器实例具有正在创建状态,直到此数据库集群就绪可供使用。
当写入器实例的状态变为可用时,您便可以连接到该数据库集群。根据数据库实例类和存储量,新数据库集群可能需要等待 20 分钟时间才可用。
(可选)使用 AWS CloudFormation 创建 VPC、EC2 实例和 Aurora PostgreSQL 集群
您可以通过将基础设施视为代码来使用 AWS CloudFormation 配置 AWS 资源,而无需使用控制台创建 VPC、EC2 实例和 Aurora PostgreSQL 数据库集群。为了帮助您将 AWS 资源组织成更小、更易于管理的单元,您可以使用 AWS CloudFormation 嵌套堆栈功能。有关更多信息,请参阅在 AWS CloudFormation 控制台上创建堆栈和使用嵌套堆栈。
重要
AWS CloudFormation 是免费的,但 CloudFormation 创建的资源是实时的。您需要为这些资源支付标准使用费,直到您终止使用它们为止。总费用将应该最少的。有关如何最大限度降低费用的信息,请转至 AWS Free Tier
要使用 AWS CloudFormation 控制台创建资源,请执行以下步骤:
步骤 1:下载 CloudFormation 模板
步骤 2:使用 CloudFormation 配置资源
下载 CloudFormation 模板
CloudFormation 模板是一个 JSON 或 YAML 文本文件,其中包含有关您希望在堆栈中创建的资源的配置信息。此模板还会为您创建 VPC 和堡垒主机以及 Aurora 集群。
要下载模板文件,请打开以下链接:Aurora PostgreSQL CloudFormation template
在 Github 页面中,单击 Download raw file 按钮以保存模板 YAML 文件。
使用 CloudFormation 配置资源
注意
在开始此过程之前,请确保您的 AWS 账户中具有 EC2 实例密钥对。有关更多信息,请参阅 Amazon EC2 密钥对和 Linux 实例。
使用 AWS CloudFormation 模板时,必须选择正确的参数以确保正确创建资源。按以下步骤操作:
登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 选择创建堆栈。
在“指定模板”部分,选择从您的计算机上传模板文件,然后选择下一步。
在指定堆栈详细信息页面上,设置以下参数:
将堆栈名称设置为 AurPostgreSQLTestStack。
在参数下,通过选择两个可用区来设置可用区。
在 Linux 堡垒主机配置下,在密钥名称中,选择用于登录您的 EC2 实例的密钥对。
在 Linux 堡垒主机配置设置中,将允许的 IP 范围设置为您的 IP 地址。要使用 Secure Shell(SSH)连接到 VPC 中的 EC2 实例,请通过 https://checkip.amazonaws.com
上的服务确定您的公有 IP 地址。IP 地址的示例为 192.0.2.1/32。 警告
如果您使用
0.0.0.0/0
进行 SSH 访问,则所有 IP 地址可能能够使用 SSH 访问您的公有 EC2 实例。在测试环境下短时间内,此方法尚可接受,但它对于生产环境并不安全。在生产环境中,将仅向特定 IP 地址或地址范围授权使用 SSH 访问您的 EC2 实例。在数据库常规配置下,将数据库实例类设置为 db.t4g.large。
将数据库名称设置为
database-test1
。在数据库主用户名中,输入主用户的名称。
在本教程中,将使用 Secrets Manager 管理数据库主用户密码设置为
false
。在数据库密码中,设置所选密码。请记住此密码以便在教程中的后续步骤中使用。
将多可用区部署设置为
false
。将所有其他设置保留为默认值。单击下一步继续。
在配置堆栈选项页面中,保留所有默认选项。单击下一步继续。
在查看堆栈页面中,在检查数据库和 Linux 堡垒主机选项后,选择提交。
堆栈创建过程完成后,查看名为 BastionStack 和 APGNS 的堆栈,记下连接到数据库所需的信息。有关更多信息,请参阅在 AWS Management Console 上查看 AWS CloudFormation 堆栈数据和资源。
步骤 3:连接到 Aurora PostgreSQL 数据库集群
您可以使用任何标准 PostgreSQL 客户端应用程序连接到数据库集群。在该示例中,您使用 psql 命令行客户端连接到 Aurora PostgreSQL 数据库集群。
连接到 Aurora PostgreSQL 数据库集群
-
找到您的数据库集群的写入器实例的端点(DNS 名称)和端口号。
-
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 在 Amazon RDS 控制台的右上角,选择数据库集群的 AWS 区域。
-
在导航窗格中,选择 Databases(数据库)。
-
选择 Aurora PostgreSQL 数据库集群名称以显示其详细信息。
-
在连接和安全性选项卡上,复制写入器实例的端点。另请注意端口号。您需要端点和端口号才能连接到数据库集群。
-
-
按照《Amazon EC2 用户指南》的连接到您的 Linux 实例中的步骤,连接到您之前创建的 EC2 实例。
我们建议您使用 SSH 连接到 EC2 实例。如果 SSH 客户端实用程序安装在 Windows、Linux 或 Mac 上,则可以使用以下命令格式连接到该实例:
ssh -i
location_of_pem_file
ec2-user@ec2-instance-public-dns-name
例如,假设在 Linux 上
ec2-database-connect-key-pair.pem
存储在/dir1
中,而 EC2 实例的公有 IPv4 DNS 为ec2-12-345-678-90.compute-1.amazonaws.com
。SSH 命令将如下所示:ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
通过更新 EC2 实例上的软件,获取最新的错误修复和安全更新。为此,请使用以下命令。
注意
-y
选项安装更新时不提示确认。要在安装前检查更新,请忽略该选项。sudo dnf update -y
-
使用以下命令在 Amazon Linux 2023 上安装 PostgreSQL 中的 psql 命令行客户端:
sudo dnf install postgresql15
-
连接到 Aurora PostgreSQL 数据库集群。例如,输入以下命令。此操作可让您使用 psql 客户端连接到 Aurora PostgreSQL 数据库集群。
用写入器实例的端点替换
,用要连接到的数据库名称endpoint
--dbname
替换
,并用您使用的主用户名替换postgres
。提示输入密码时,提供所使用的主密码。postgres
psql --host=
endpoint
--port=5432 --dbname=postgres
--username=postgres
在输入用户的密码后,您应该会看到类似于以下内容的输出。
psql (14.3, server 14.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. postgres=>
有关连接到 Aurora PostgreSQL 数据库集群的更多信息,请参阅连接到 Amazon Aurora PostgreSQL 数据库集群。如果您无法连接到数据库集群,请参阅无法连接到 Amazon RDS 数据库实例。
出于安全考虑,最佳做法是使用加密连接。仅当客户端和服务器位于同一 VPC 中,并且网络受信任时,才会使用未加密的 PostgreSQL 连接。有关使用加密连接的信息,请参阅 利用 SSL/TLS 保护 Aurora PostgreSQL 数据。
-
运行 SQL 命令。
例如,以下 SQL 命令显示了当前日期和时间:
SELECT CURRENT_TIMESTAMP;
步骤 4:删除 EC2 实例和数据库集群
在连接到您创建的示例 EC2 实例和数据库集群并进行浏览之后,删除它们,以便不再为其付费。
如果您使用 AWS CloudFormation 创建了资源,请跳过此步骤,转至下一步。
删除 EC2 实例
登录到 AWS Management Console 并打开 Amazon EC2 控制台(https://console.aws.amazon.com/ec2/
)。 -
在导航窗格中,选择实例。
-
选择 EC2 实例,然后依次选择实例状态、终止实例。
-
当系统提示您确认时,选择终止。
有关删除 EC2 实例的更多信息,请参阅《Amazon EC2 用户指南》中的终止实例。
删除数据库集群
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
选择 Databases (数据库),然后选择与数据库集群关联的数据库实例。
-
对于 Actions,选择 Delete。
-
选择 Delete。
删除与数据库集群关联的所有数据库实例后,将自动删除数据库集群。
(可选)删除使用 CloudFormation 创建的 EC2 实例和数据库集群
如果您使用 AWS CloudFormation 创建了资源,请在连接并浏览 EC2 实例和数据库集群示例之后,删除 CloudFormation 堆栈,以便不再为其付费。
删除 CloudFormation 资源
打开 AWS CloudFormation 控制台。
-
在 CloudFormation 控制台的堆栈页面上,选择根堆栈(名称不是 VPCStack、BastionStack 或 APGNS 的堆栈)。
-
选择删除。
-
提示进行确认时,选择删除堆栈。
有关如何删除 CloudFormation 中堆栈的信息,请参阅《AWS CloudFormation 用户指南》中的在 AWS CloudFormation 控制台上删除堆栈。
(可选)将您的数据库集群连接到 Lambda 函数
您也可以将您的 Aurora PostgreSQL 数据库集群连接到 Lambda 无服务器计算资源。Lambda 函数支持在不预调配或管理基础设施的情况下运行代码。Lambda 函数还支持自动响应任何规模的代码执行请求,从每天十几个事件到每秒数百个事件。有关更多信息,请参阅 自动连接 Lambda 函数和 Aurora 数据库集群。