使用AWS CDK部署无服务器应用程序

2020-05-17 06:55:35

部署API端点的方法有多种,例如本例,您可以使用在Amazon EC2上运行的应用程序来演示如何将Amazon ElastiCache与Amazon DocumentDB(具有MongoDB功能)集成。虽然本例中的方法通过弹性和扩展或缩小EC2实例数量以适应应用程序负载的能力,帮助实现了出色的性能和可靠性,但是,您仍然需要自己管理EC2实例,这仍然会带来一些运营开销。解决运营开销问题和相关成本的一种方法是将应用程序转变为无服务器架构。

这篇博客文章中的示例使用了一个提供类似用例的应用程序,该应用程序使用了一个无服务器架构,该架构展示了一些客户正在利用的工具,这些工具是由客户从提升和转移过渡到构建云原生应用程序的。它使用Amazon API Gateway提供连接到AWS Lambda函数的rest API端点,以提供从Amazon Aurora Serverless数据库读取和写入的业务逻辑。它还展示了如何使用AWS云开发工具包(称为CDK)部署大多数基础设施。通过将您的应用程序迁移到云本地架构(如本文中展示的示例),您将能够实现许多好处,包括:

在本博客的末尾,您有一个包含CDK项目的AWS Cloud9实例环境,该项目部署了API网关和Lambda函数。此Lambda函数利用存储在您的AWS Secrets Manager中的密码,通过Data API从您的Aurora Serverless数据库读取和写入,如下图所示。

初始化和配置AWS云开发工具包项目,包括Amazon API Gateway端点和AWS Lambda函数的定义。

要部署CDK应用程序,需要满足几个前提条件:

展开Additional Connectivity部分并选择Data API选项。此功能使您能够通过基于Web服务的应用程序访问Aurora Serverless。它还允许您使用Aurora Serverless的查询编辑器功能,以便对数据库实例运行SQL查询。

您的数据库实例是在单个可用区(AZ)中创建的,但Aurora Serverless数据库群集具有一种称为自动多AZ故障转移的功能,该功能使Aurora能够在当前数据库实例或AZ变得不可用时在不同的AZ中重新创建数据库实例。由于Aurora将计算容量和存储分开,因此群集的存储卷分布在多个AZ中。这样,即使数据库实例或关联的AZ受到停机的影响,数据也可以保持可用。

创建数据库实例后,下一步是将数据库的机密存储在AWS Secrets Manager中。

保留密码类型的默认选择(RDS数据库的凭据)。输入您的数据库用户名和密码,然后选择您在上一步中创建的数据库的单选按钮(在本例中为db-blog),如下面的屏幕截图所示。

输入名称和说明(可选)。对于名称,请确保添加前缀rds-db-credentials/,如下面的屏幕截图所示。

查看最后一页上的设置,然后选择存储以在AWS Secrets Manager中创建和存储您的机密,您现在可以使用该管理器连接到您的数据库。

创建DB集群后,创建数据库实例;创建表并填充表;最后,测试连接以确保可以查询数据库。

从AWS控制台导航到Amazon RDS服务,然后选择您的db-blog数据库集群。

选择Actions下的Query以打开Connect to database窗口,如下面的屏幕截图所示。输入您的数据库连接详细信息。您可以从Secrets Manager服务复制密码管理器ARN,并将其粘贴到数据库连接窗口的相应字段中。

要创建DB实例,请运行以下SQL查询:从下面屏幕截图所示的查询编辑器中创建数据库记录存储:

在运行以下命令之前,请确保您使用的是刚刚通过运行命令创建的Recordstore数据库:

CREATE TABLE IF NOT EXISTS记录(RECORDID INT PRIMARY KEY,TITLE VARCHAR(255)NOT NULL,RELEASE