使用 Amazon Aurora Serverless

构建无服务器应用程序

Amazon Aurora 是一种与 MySQL 和 PostgreSQL 兼容的关系数据库,既具有传统企业数据库的性能和可用性,又具有开源数据库的简单性和成本效益。Amazon Aurora Serverless 是一种针对 Amazon Aurora(MySQL 兼容版和 PostgreSQL 兼容版)的按需自动扩展配置,其中,数据库将根据您的应用程序需求来自动启动、关闭以及扩展或缩减。它让您可以在云中运行数据库,而无需管理任何数据库实例。它是一种简单且更具成本效益的选择,适用于不频繁的、间歇性的或不可预测的工作负载。

在本教程中,您将学习如何使用 Amazon Aurora Serverless(PostgreSQL 兼容版)、Data API for Aurora Serverless、Amazon Lambda 和 Amazon Simple Notification Service (SNS) 创建无服务器消息处理应用程序。本教程将提供创建 Aurora Serverless 数据库的分步说明,使用数据 API 将其与使用来自 Amazon SNS 的消息的 Amazon Lambda 函数连接,并将消息存储在 Aurora Serverless 数据库中。

关于本教程
时间 10-20 分钟      
费用 低于 1 USD
使用案例 数据库
产品 Amazon Aurora、Amazon SNS、AWS Lambda
级别 100
上次更新日期 2019 年 9 月 24 日

第 1 步:创建 Aurora Serverless 数据库

1.1 – 打开浏览器并导航到 Amazon RDS 控制台。如果您已有 AWS 账户,请登录控制台。如果还没有,请新建一个 AWS 账户以开始学习。

已拥有账户? 登录您的账户

1.2 – 在右上角,选择要启动 Aurora 数据库集群的区域。

1.3 – 在“Amazon Aurora”窗口中单击“创建数据库”。

继续操作之前,请切换到新建数据库流程:

引擎选项

1.4 – 对于“数据库引擎”,选择“Amazon Aurora”。

1.5 – 对于“版本”,选择“兼容 PostgreSQL 的 Amazon Aurora”。

数据库功能

1.6 – 选择“无服务器”。

设置

1.7 – 为 Aurora 数据库集群选择一个标识符,例如“database-1”。

凭证设置

1.8 – 选择数据库的用户名和密码。

容量设置

1.9 – 对于“最大 Aurora 容量单位”,选择“2”。

连接

1.10 – 选择要在其中创建数据库的 VPC。

请注意,一经创建,数据库便无法迁移到其他 VPC。

1.11 – 单击“其他连接配置”。

1.12 – 对于“子网组”,选择默认值。

1.13 – 对于“VPC 安全组”,选择“新建”。如果您恰好有一个安全组允许在端口 3306 上传入 TCP 连接,也可以选择该安全组。

1.14 – 在“新 VPC 安全组名称”中,键入“aurora-tutorial”。

1.15 – 启用 Data API。

其他配置

1.16 – 对于“删除保护”,取消选中“启用删除保护”。

虽然最佳实践是启用“删除保护”,但是,如果您想在本教程结束后删除数据库,则可以取消选中该选项。

检查并创建

快速检查表单中的所有字段后,您可以继续操作。

1.17 – 单击“创建数据库”​。

在创建实例时,您将看到一个说明如何获取凭证的横幅。此时建议您将凭证保存到某个位置,因为之后您将无法再次查看该密码。

检索集群 ARN

1.18 – 单击数据库名称。

1.19 – 在“配置”选项卡中,复制集群 ARN,将其存放在随时可以找到的位置。稍后您会用到此信息。

连接到数据库

1.20 – 打开左侧面板,然后单击“查询编辑器”。

1.21 – 选择“database-1”,输入“postgres”作为数据库用户名,并输入您之前创建的数据库密码,然后键入“postgres”作为数据库名称。

1.22 – 单击“连接到数据库”。

1.23 – 现在,您可以单击“运行”并执行示例查询。

1.24 – 通过运行以下查询来创建数据库:

CREATE DATABASE tutorial;

1.25 – 单击“更改数据库”。

1.26 – 将数据库更改为您刚刚创建的数据库。

1.27 – 使用如下查询创建表:

CREATE TABLE sample_table(received_at TIMESTAMP, message VARCHAR(255));

通过使用查询编辑器连接到数据库,系统会创建一个密钥,供后续在 Lambda 函数中使用。保持此选项卡处于打开状态,因为在本教程结尾处,您将需要运行一些查询。

复制密钥 ARN

打开新选项卡,转到 AWS Secrets Manager。然后按照以下步骤检索密钥 ARN。 

1.28 – 找到包含“database-1 的 RDS 数据库 postgres 凭证”的密钥。

1.29 – 单击密钥名称后,复制密钥 ARN 并将其存放在随时可以找到的位置。

第 2 步:创建 AWS Cloud9 环境

打开一个新选项卡,转到 AWS Cloud9 控制台。然后,按照以下步骤创建一个新环境。 

2.1 – 单击“创建环境”:

2.2 – 输入新环境的名称,然后单击“下一步”。

2.3 – 向下滚动并单击“下一步”。

2.4 – 单击“创建环境”。

2.5 – 环境准备就绪后,单击“创建 Lambda 函数”。

2.6 – 输入“auroratest”作为函数名称。然后,单击“下一步”。

2.7 – 选择“empty-python”蓝图,然后单击“下一步”。

2.8 – 在以下屏幕中,依次单击“下一步”、“下一步”和“完成”。

现在环境已准备就绪,您将看到 Lambda 函数的蓝图。

在开始编码之前,您需要按照第 3 步中的说明配置一些权限。让此环境保持打开状态,并使用其他选项卡完成后续步骤。

第 3 步:配置权限

打开一个新选项卡,转到 AWS IAM 控制台。然后按照以下步骤为 Lambda 函数分配权限。

3.1 – 单击“角色”,然后搜索以“cloud9-”开头的角色。

3.2 – 单击角色名称,然后单击“附加策略”。

3.3 – 选择“AmazonRDSDataFullAccess”策略,然后单击“附加策略”。

您将看到一个带有浅绿色横幅的屏幕,说明已成功附加该策略。

第 4 步:创建 AWS Lambda 函数

返回您在第 2 步中创建的 Cloud9 环境,然后按照下面的说明执行操作。

4.1 – 在控制台中运行以下命令,以转到 auroratest 目录:

$ cd auroratest

4.2 – 在控制台中运行以下命令,以安装 boto3 依赖项:

$ pip install boto3 -t boto3

4.3 – 删除 lambda_function 文件中的代码,并在其位置复制此 示例代码

4.4 – 将 cluster_arn 和 secret_arn 值替换为之前步骤中获得的集群 ARN 和密钥 ARN 值。

4.5 – 单击“文件”>“保存”,然后在右侧面板中选择 Lambda 函数。

4.6 – 单击向上箭头部署 Lambda 函数。

第 5 步:创建 Amazon SNS 主题

您的 Lambda 函数将处理来自 Amazon Simple Notification Service (SNS) 的消息,该服务为微服务和无服务器应用程序提供发布/订阅消息传递。

在新选项卡中,访问 SNS 控制面板,然后按照以下说明进行操作:

5.1 – 在“主题名称”中输入 aurora-lambda-sns-test,然后单击“下一步”。

5.2 – 保留所有默认值,然后单击“创建主题”。

您将看到一个绿色横幅,指示该主题已成功创建。

5.3 – 复制 SNS ARN 并将其存放在随时可以找到的位置。

保持此选项卡处于打开状态,因为将 Lambda 函数配置为从创建的主题读取数据,您要使用它来发布消息。

第 6 步:向 Amazon SNS 主题订阅 AWS Lambda 函数

转到 AWS Lambda 管理控制台,然后按照这些说明操作:

6.1 – 单击您在第 4 步中创建的 Lambda 函数的名称。

6.2 – 单击“添加触发器”。

6.3 – 键入“SNS”,然后从下拉菜单中选择“SNS”服务。

6.4 – 在“SNS 主题”字段中,输入 SNS ARN。

6.5 – 启用触发器,然后单击“添加”。

第 7 步:发布测试消息

返回 SNS 控制面板,然后按照以下说明执行操作:

7.1 – 单击“发布消息”。

7.2 – 为“主题”字段输入任意值。

7.3 – 为“正文”字段输入任意值。

7.4 – 向下滚动并单击“发布消息”。

发布消息后,Lambda 函数将使用该消息并进行处理。在下一节中,您将验证数据是如何写入 Aurora 数据库的。

验证数据库更改

7.5 – 转至打开“查询编辑器”的选项卡。如果您已关闭该选项卡,请访问 RDS 控制面板并连接到“查询编辑器”,如 1.20 中所述。

7.6 – 连接到“tutorial”数据库。

7.7 – 从 sample_table 中选择所有记录:

从 sample_table 中选择 *;

7.8 – 单击“运行”并向下滚动以查看结果。

现在,所有这些都应该正常工作。您可以通过更改使用 SNS 发送的消息进行实验,也可以根据需要更改 lambda_handler 函数。

第 8 步:清理

要完成本教程,您将了解如何在不再需要 Aurora DB 集群时将其删除,同时还将学习 Lambda 函数、Cloud9 环境,连接到数据库的密钥以及任何其他剩余内容。

删除 Lambda 函数

8.1 – 转至 AWS Lambda 管理控制台,然后选择 Lambda 函数。

8.2 – 单击“操作”>“删除”。

删除 SNS 主题

8.3 – 访问 SNS 控制面板并单击左侧面板上的“主题”。

8.4 – 选择您在第 5 步中创建的主题,然后单击“删除”。

8.5 – 系统将要求您进行确认。键入“delete me”以确认,然后单击“删除”。

删除 Cloud9 环境

8.6 – 转到 AWS Cloud9 控制台并选择您为此教程创建的环境。

8.7 – 单击“删除”。

8.8 – 当系统要求确认时,键入“Delete”并单击“删除”按钮。

删除 Aurora Serverless 数据库

8.9 – 转至 Amazon RDS 控制台,并选择您为本教程创建的数据库。

8.10 – 单击“操作”>“删除”。

系统将询问您是否要创建最终快照。通常情况下建议您创建快照,但在本教程中没有必要这样做。

8.11 – 当系统要求确认时,针对是否创建最终快照的问题选择“否”。然后选中“我确认...”并单击“删除数据库集群”。

删除您的密钥

8.12 – 转至 AWS Secrets Manager,找到包含“database-1 的 RDS 数据库管理员凭证”的密钥,然后单击该密钥的名称。

8.13 – 单击“操作”>“删除密钥”。

8.14 – 无法立即删除密钥。计划删除的最短等待时间为 7 天。选择 7 天,然后单击“计划删除”。

删除您的 IAM 角色

8.15 – 登录 AWS IAM 控制台。单击“角色”,然后搜索以“cloud9-”开头的角色。

8.16 – 选择角色并单击“删除角色”。

8.17 – 当系统要求确认时,单击“是,删除”。

恭喜

您创建了一个 Aurora Serverless 数据库,并通过 Aurora 的数据 API 将其与 AWS Lambda 函数相连接。您已将 Amazon Simple Notification Service (SNS) 配置为 Lambda 函数的触发器,您通过 SNS 发送的消息已处理并存储在 Aurora Serverless 数据库中。

本教程对您是否有帮助?

谢谢
请告知我们您喜欢什么。
很抱歉让您失望了
是否存在过时、令人困惑或不准确的内容? 请向我们提供反馈,帮助我们改进本教程。

详细了解 Amazon Aurora 的功能

通过 Amazon Aurora 用户指南了解有关 Amazon Aurora 功能的更多信息。

使用 Amazon Aurora 的最佳实践

了解有关使用数据或将数据迁移到 Amazon Aurora 数据库集群的通用最佳实践和选项。

了解有关无服务器的更多信息

如果您想了解更多有关无服务器应用程序的信息,请参阅 AWS Lambda 文档Aurora 用户指南