2026-01-27 12:26:12
18
在这篇文章中,我们详细介绍了 Amazon Aurora Serverless v2 和预配置集群的 数据 API 的新特性。该 API 提供了一种灵活、高效的方式,让开发者能够更简单地与 Aurora 数据库交互。以下是文章的主要内容:
引入了对 Aurora Serverless v2 和预配置实例的支持。消除了每秒请求次数的限制。支持通过 AWS AppSync 创建 GraphQL API。增强了日志记录功能可用于 CloudTrail。传统上,与关系数据库通信的应用程序需要通过驱动程序与数据库服务器建立持久连接。然而,随着无服务器应用程序的兴起例如使用 AWS Lambda 开发的应用,这种持久连接变得不再适用,因为无服务器应用程序本质上是无状态的。此外,传统数据库驱动程序通常附带一些复杂的调优参数,对于不太熟悉这些驱动程序的开发者来说,可能会导致误用。
2018年11月,AWS 宣布发布了 Amazon Aurora Serverless 的数据 API。该 API 是一个直观且安全的 HTTPS 接口,能够对关系数据库执行 SQL 查询,从而加速现代应用的开发。数据 API 适用于各类客户,从初创公司到企业,帮助他们减少与 Amazon Aurora 数据库安全连接所需的繁琐网络和应用配置任务。数据 API 消除了驱动程序的需求,并通过自动池化和共享数据库连接来提高应用程序的可扩展性,使开发者不再需要管理连接。用户可以通过 AWS SDK 或 AWS 命令行界面AWS CLI调用该 API。
本文将讨论数据 API 的改进及其对 Aurora Serverless v2 和预配置集群的支持。
数据 API 的最初版本专门与 Aurora Serverless v1 配合使用。Aurora Serverless v1 旨在自动根据工作负载调整数据库计算资源。2022年11月,AWS 宣布推出 Aurora Serverless 的下一版本:Aurora Serverless v2。
Aurora Serverless v2 引入了多个改进,包括更细粒度的扩展、响应内存压力的缩放和动态调整的缓冲区缓存。最重要的改进是,它在实例层而非集群层上实施。这意味着,在一个 Aurora 集群中,您可以同时拥有预配置实例和 Aurora Serverless v2 实例。
AWS 为 Aurora Serverless v2 和预配置实例重新构建了数据 API,以满足大型客户所需的规模和高可用性。以下是一些改进内容:
数据 API 现在支持 Aurora Serverless v2 和预配置实例,支持 数据库故障转移。我们取消了每秒1000个请求的限制,唯一限制数据 API 请求速率的因素是数据库实例的大小及可用资源。数据 API 最初支持 Amazon Aurora PostgreSQL 兼容版,不久后将支持 Amazon Aurora MySQL 兼容版。数据 API 始终设计得易于使用,整个接口仅包含五个 API 调用。我们保持了与之前开发的数据 API 兼容的 API 签名。接下来,我们将讨论数据 API 的其他改进和设计注意事项,并演示如何将 Aurora Serverless v1 集群迁移到 Aurora Serverless v2,配置数据 API,并使用此 API 执行查询。
AWS CloudTrail 记录 AWS 账户内的事件,包括管理和数据事件。管理事件捕获基础设施的更改。例如,创建一个 Amazon Simple Storage Service (Amazon S3) 桶将创建一个管理事件。然而,对 S3 桶中数据的更改会记录为数据事件。
Aurora Serverless v2 和预配置的 Data API 将 CloudTrail 事件记录为数据事件,而 Aurora Serverless v1 的数据 API 捕获的事件则为管理事件。这一日志记录功能默认为禁用,但如果组织需要捕获通过数据 API 应用的数据事件,可以启用该功能,费用相对较低。有关定价细节,请参见 AWS CloudTrail 定价。
在设计以数据 API 为基础的 Aurora Serverless v2 和预配置实例的应用程序时,有几个事项需要考虑。首先,数据 API 每行的结果集大小限制为 64 KB。应用程序需确保每个返回的行大小不超过 64 KB。有关更多信息,请参见 故障排除数据 API 问题。
现在我们已经介绍了 Aurora Serverless v2 和预配置的 Data API 的新特性,接下来让我们了解如何设置它。
Aurora Serverless v1 客户迁移到 Aurora Serverless v2 的第一步是调用 rdsmodifydbcluster 命令。此调用会创建现有 Aurora Serverless v1 集群的快照,并进行就地迁移,变更为单节点的 Aurora 预配置集群。以下 AWS CLI 命令为将名为 asv1a 的 Aurora Serverless v1 集群升级为一个 dbr5large 类型的预配置集群的示例:
bashaws rds modifydbcluster dbclusteridentifier asv1a enginemode provisioned allowenginemodechange dbclusterinstanceclass dbr5large
请注意,根据您的特定工作负载,可能需要与 dbr5large 不同的实例大小和类型。
由于数据 API 以前只与 Aurora Serverless v1 结合使用,一些更适合预配置实例的工作负载不得不在无服务器实例中运行。利用此次更新,在修改数据库集群命令完成后,集群无需进一步修改。不过,如果工作负载更适合无服务器配置,您可以将集群中的 dbr5large 单节点更换为 dbserverless,步骤分为两步。
第一步是设置集群的伸缩配置。可以使用以下命令完成此操作:
bashaws rds modifydbcluster dbclusteridentifier asv1a serverlessv2scalingconfiguration MinCapacity=05MaxCapacity=128
此命令指定 Aurora Serverless v2 节点的缩放范围为 05 ACU 至 128 ACU。根据您的具体要求,可以设置不同的值。而且,这些值可以在将来进行更改。
下一步是将集群中现有的实例类型从 dbr5large 修改为 dbserverless。这可以通过下面的命令完成:
bashaws rds modifydbinstance dbinstanceidentifier asv1ainstance1 dbinstanceclass dbserverless applyimmediately
请注意,这些步骤将导致一定的停机时间。有关以最小停机时间执行此升级的说明,请参见 以最小停机时间从 Amazon Aurora Serverless v1 升级到 v2。

无论您是刚刚升级了 Aurora Serverless v1 集群,还是已经拥有包含 Aurora Serverless v2 或预配置实例的现有集群,配置数据 API 仅需两个步骤。
第一步是获取希望连接数据 API 的集群的 ARN。要获取该集群的 ARN,可以执行以下 AWS CLI 调用:
bashaws rds describedbclusters dbclusteridentifier asv1a query DBClusters[0]DBClusterArn
接下来的步骤是为集群启用 HTTP 端点,并指定上述获取的 ARN:
bashaws rds enablehttpendpoint resourcearn arnltARN of existing clustergt
数据 API 成功连接到集群后,下一步就是查询一些数据。可以通过多种 AWS SDK 来实现;本文的示例使用 Python 编写。
在编写代码之前,运行数据 API 查询还需要一项更多的信息: AWS Secrets Manager 秘密的 ARN。
要创建 Secrets Manager 秘密并获取其 ARN,可以执行以下调用:
bashaws secretsmanager createsecret name appsecret description Data API Secret secretstring {usernameltusernamegtpasswordltpasswordgt} query ARN
确保前述代码中提供的用户凭据在数据库中存在且具有适当的权限。
在获取集群 ARN 和秘密 ARN 后,您可以使用 AWS SDK 编写如下 Python Boto3 示例代码:
pythonimport boto3
日本加速器下载rdsData = boto3client(rdsdata)clusterarn = secretarn =
rdsDataexecutestatement(resourceArn=clusterarn secretArn=secretarn database=postgres sql=drop database if exists testdb with (force))
rdsDataexecutestatement(resourceArn=clusterarn secretArn=secretarn database=postgres sql=create database testdb)
rdsDataexecutestatement(resourceArn=clusterarn secretArn=secretarn database=testdb sql=create table table01 (rowid int rowval varchar(50)))
for i in range(10) rdsDataexecutestatement(resourceArn=clusterarn secretArn=secretarn database=testdb sql=insert into table01 (rowid rowval) values ({} Hello World!)format(i))
response1 = rdsDataexecutestatement(resourceArn=clusterarn secretArn=secretarn database=testdb sql=select from table01)for row in response1[records] print(row)
您可以使用数据 API 和 AWS AppSync 创建连接到 Aurora 数据库的 GraphQL API。AWS AppSync 是一项托管服务,使得连接您在 AWS 上的 Web 和移动应用程序与数据变得简单。现在,您可以直接将 Aurora Serverless v2 和预配置数据库连接到 AWS AppSync,并利用 AWS AppSync JavaScript 解析器在数据库上运行 SQL 语句。Web 和移动应用程序可以通过 AWS AppSync API 与数据库交互,而无需启动其他资源。要了解有关 AWS AppSync 的更多信息以及如何为 Aurora 数据库构建应用程序 API,请参见 AWS AppSync 文档。
在这篇文章中,我们查看了数据 API 被扩展以支持 Aurora Serverless v2 以及预配置实例。这使您能够充分利用 Aurora 平台与数据 API。此外,请求限制已被移除,允许处理更大和更复杂的工作负载。现在就开始使用 Data API 吧!
Steve Abraham 是亚马逊网络服务的首席解决方案架构师。他与我们的客户合作,提供数据库项目的指导和技术支持,帮助他们在使用 AWS 时提升解决方案的价值。