首页  »  AWS 教程

使用 Amazon Aurora Serverless 构建无服务器应用程序

Amazon Aurora
Amazon SNS
Amazon Lambda
Olawale Olaleye
亚马逊云科技使用经验
初级
完成所需时间
10–20 分钟
前提条件

注册 / 登录 亚马逊云科技账户

所需费用

低于 1 美元

使用场景

数据库

上次更新时间
2019 年 9 月 24 日

概述

Amazon Aurora 是一款与 MySQL 和 PostgreSQL 兼容的关系型数据库,集传统企业级数据库的性能与可用性和开源数据库的简单性与经济性于一身。Amazon Aurora Serverless 是 Amazon Aurora(兼容 MySQL 和 PostgreSQL)的一种按需自动扩展配置,数据库会根据应用程序的需求自动启动、关闭以及扩展或收缩容量。它让您无需管理任何数据库实例即可在云中运行数据库。对于非频繁、间歇性或不可预测的工作负载,它是一个简单且经济高效的选择。

在本教程中,您将学习如何使用 Amazon Aurora Serverless(兼容 PostgreSQL)、适用于 Aurora Serverless 的数据 API、Amazon Lambda 和 Amazon Simple Notification Service (SNS) 创建无服务器消息处理应用程序。本教程将分步指导您创建 Aurora Serverless 数据库,使用数据 API 将其与一个使用 Amazon SNS 消息的 Amazon Lambda 函数相连,并将消息存储在 Aurora Serverless 数据库中。

步骤 1:创建 Aurora Serverless 数据库

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

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

1.3 — 在 Amazon Aurora 窗口中点击 Create database(创建数据库)。

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

引擎选项

1.4 — 对于 Database engine(数据库引擎),选择 Amazon Aurora。

1.5 — 对于 Edition(版本),选择 Amazon Aurora with PostgreSQL compatibility(兼容 PostgreSQL 的 Amazon Aurora)。

数据库功能

1.6 — 选择 Serverless (无服务器)。

设置

1.7 — 为 Aurora 数据库集群指定一个标识符,例如 database-1。

凭证设置

1.8 — 为数据库指定用户名和密码。

容量设置

1.9 — 对于 Maximum Aurora capacity unit(最大 Aurora 容量单位),选择 2。

连接

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

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

1.11 — 点击 Additional connectivity configuration(其他连接配置)。

1.12 — 为 Subnet group(子网组)选择默认值。

1.13 — 在 VPC security group(VPC 安全组)上,选择 Create new(新建)。如果您恰好有一个允许端口 3306 上的入站 TCP 连接的安全组,也可以选择它。

1.14 — 对于 New VPC security group name(新建 VPC 安全组名称),键入 aurora-tutorial。

1.15 — 启用 Data API。

其他配置

1.16 — 在 Deletion protection(删除保护)下,取消选中 Enable deletion protection(启用删除保护)。

最佳做法是启用 Deletion protection(删除保护),但如果要在本教程结束时删除数据库,可以取消选中该选项。

检查和创建

快速检查表单中的所有字段后即可继续。

1.17 — 点击 Create database(创建数据库)。

在创建实例时,您将看到一条横幅,说明如何获取凭证。此时正是妥善保存凭证的好时机,因为这是您唯一能够查看此密码的机会。

检索集群 ARN

1.18 — 点击数据库名称。

1.19 — 在 Configuration(配置)选项卡中,复制集群的 Amazon 资源名称 (ARN) 并妥善保管。稍后会用到它。

连接数据库

1.20 — 打开左侧面板,点击 Query Editor(查询编辑器)。

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

1.22 — 点击 Connect to database(连接数据库)。

1.23 — 现在您可以点击 Run(运行)并执行示例查询。

1.24 — 通过运行以下查询语句创建数据库:

CREATE DATABASE tutorial;

1.25 — 点击 Change database(更改数据库)。

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

1.27 — 使用以下查询创建一个表:

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

使用查询编辑器连接数据库会创建一个密钥,您之后会在 Lambda 函数中用到此密钥。请保持此选项卡打开,因为您需要在教程结束时运行一些查询。

复制密钥 ARN

打开新的标签页,前往 AWS Secrets Manager。然后按照以下步骤操作,检索密钥 ARN。 

1.28 — 查找包含 RDS database postgres credentials for database-1(database-1 的 RDS 数据库 postgres 凭证)的密钥。

1.29 — 点击 Secret name(密钥名称)之后,复制 Secret ARN(密钥 ARN)并妥善保管。

步骤 2:创建 AWS Cloud9 环境

打开新的标签页,前往 AWS Cloud9 控制台。然后按照以下步骤操作,创建新环境。

2.1 — 点击 Create environment(创建环境):

2.2 — 输入新环境的名称,点击 Next step(下一步)。

2.3 — 向下滚动,点击 Next step(下一步)。

2.4 — 点击 Create environment(创建环境)。

2.5 — 环境准备就绪后,点击 Create Lambda Function(创建 Lambda 函数)。

2.6 — 输入 auroratest 作为函数的名称。然后点击 Next(下一步)。

2.7 — 选择 empty-python 蓝图并点击 Next(下一步)。

2.8 — 在接下来的屏幕中,点击 Next(下一步)、Next(下一步),然后点击 Finish(完成)。

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

在开始编写代码之前,您需要按照步骤 3 中的描述配置一些权限。请保持打开此环境,并使用其他标签页完成后续步骤。

步骤 3:配置权限

打开新的标签页,前往 AWS IAM 控制台。然后按照以下步骤操作,为 Lambda 函数分配权限。

3.1 — 点击 Roles(角色),然后搜索以 cloud9- 开头的角色。

3.2 — 点击角色名称,然后点击 Attach policies(附加策略)。

3.3 — 选择 AmazonRDSDataFullAccess 策略,然后点击 Attach policies(附加策略)。

您将看到一个浅绿色横幅,表明策略已成功附加。

步骤 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 — 点击 File > Save(文件 > 保存),然后在右侧面板选择您的 Lambda 函数。

4.6 — 通过点击向上箭头部署您的 Lambda 函数。

步骤 5:创建 Amazon SNS 主题

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

在新的标签页中,访问 SNS 控制面板并按照以下步骤操作:

5.1 — 在 Topic name(主题名称)中输入 aurora-lambda-sns-test,然后点击 Next step(下一步)。

5.2 — 保留所有默认值,然后点击 Create topic(创建主题)。

您将看到一个绿色横幅,表明主题已成功创建。

5.3 — 复制 SNS ARN 并妥善保管。

请保持打开此标签页,因为将 Lambda 函数配置为从您创建的主题中读取数据后,您将使用此标签页来发布消息。

步骤 6:为 AWS Lambda 函数订阅 Amazon SNS 主题

前往 AWS Lambda 管理控制台并按照以下步骤操作:

6.1 — 点击步骤 4 中创建的 Lambda 函数的名称。

6.2 — 点击 Add trigger(添加触发器)。

6.3 — 输入 SNS 并从下拉菜单中选择 SNS 服务。

6.4 — 在 SNS Topic(SNS 主题)字段中,输入 SNS ARN。

6.5 — 启用触发器,然后点击 Add(添加)。

步骤 7:发布测试消息

返回到 SNS 控制面板并按照以下步骤操作:

7.1 — 点击 Publish Message(发布消息)。

7.2 — 在 Subject(主题)字段输入任意值。

7.3 — 在 Body(正文)字段输入任意值。

7.4 — 向下滚动,点击 Publish message(发布消息)。

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

验证数据库更改

7.5 — 前往已打开查询编辑器的标签页。如果您关闭了此标签页,请访问 RDS 控制面板,并按照步骤 1.20 所述连接查询编辑器。

7.6 — 连接 tutorial 数据库。

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

SELECT * FROM sample_table;

7.8 — 点击 Run(运行),然后向下滚动查看结果。

现在一切都应该能正常运行。您可以尝试通过 SNS 发送不同的消息,或者以任何您想要的方式修改 lambda_handler 函数。

步骤 8:清理资源

在本教程结束之际,您将学习如何删除不再需要使用的 Aurora 数据库集群、Lambda 函数、Cloud9 环境、连接数据库的密钥以及任何其他资源。

删除 Lambda 函数

8.1 — 前往 AWS Lambda 管理控制台,选择您的 Lambda 函数。

8.2 — 点击 Actions > Delete(操作 > 删除)。

删除 SNS 主题

8.3 — 访问 SNS 控制面板,点击左侧面板的 Topics(主题)。

8.4 — 选择您在步骤 5 中创建的主题,点击 Delete(删除)。

8.5 — 系统会提示您确认。输入 delete me 确认并点击 Delete(删除)。

删除 Cloud9 环境

8.6 — 前往 AWS Cloud9 控制台,然后选择在本教程中创建的环境。

8.7 — 点击 Delete(删除)。

8.8 — 当系统提示确认时,输入 Delete 并点击 Delete(删除)按钮。

删除 Aurora Serverless 数据库

8.9 — 前往 Amazon RDS 控制台,然后选择在本教程中创建的数据库。

8.10 — 点击 Actions > Delete(操作 > 删除)。

系统将询问您是否要创建最终快照。这通常是个好主意,但对于本教程而言没有必要。

8.11 — 当系统提示确认时,对于是否创建最终快照的问题,选择 No(否)。然后勾选 I acknowledge...(我已知晓……),并点击 Delete DB cluster(删除数据库集群)。

删除密钥

8.12 — 前往 AWS Secrets Manager,查找包含 RDS database admin credentials for database-1(database-1 的 RDS 数据库管理员凭证)的密钥,然后点击该密钥的名称。

8.13 — 点击 Actions > Delete secret(操作 > 删除密钥)。

8.14 — 密钥无法立即删除。计划删除的最短等待时间为 7 天。选择 7 天,然后点击 Schedule deletion(计划删除)。

删除 IAM 角色

8.15 — 前往 AWS IAM 控制台。点击 Roles(角色),然后搜索以 cloud9- 开头的角色。

8.16 — 选择该角色,然后点击 Delete role(删除角色)。

8.17 — 当系统提示确认时,点击 Yes, delete(是,删除)。

恭喜您

您已创建了一个 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 上使用数据,或将数据迁移到 Amazon Aurora 数据库集群的通用最佳实践和方法。

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

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