在这篇文章中,我们详细介绍了 Amazon Aurora Serverless v2 和预配置集群的 数据 API 的新特性。该 API提供了一种灵活、高效的方式,让开发者能够更简单地与 Aurora 数据库交互。以下是文章的主要内容:
传统上,与关系数据库通信的应用程序需要通过驱动程序与数据库服务器建立持久连接。然而,随着无服务器应用程序的兴起(例如使用 开发的应用),这种持久连接变得不再适用,因为无服务器应用程序本质上是无状态的。此外,传统数据库驱动程序通常附带一些复杂的调优参数,对于不太熟悉这些驱动程序的开发者来说,可能会导致误用。
2018年11月,AWS 宣布发布了 的数据 API。该 API是一个直观且安全的 HTTPS 接口,能够对关系数据库执行 SQL 查询,从而加速现代应用的开发。数据 API适用于各类客户,从初创公司到企业,帮助他们减少与 数据库安全连接所需的繁琐网络和应用配置任务。数据 API消除了驱动程序的需求,并通过自动池化和共享数据库连接来提高应用程序的可扩展性,使开发者不再需要管理连接。用户可以通过 或 (AWS CLI)调用该 API。
本文将讨论数据 API 的改进及其对 Aurora Serverless v2 和预配置集群的支持。
数据 API 的最初版本专门与 Aurora Serverless v1 配合使用。Aurora Serverless v1旨在自动根据工作负载调整数据库计算资源。2022年11月,AWS 宣布推出 Aurora Serverless 的下一版本:。
Aurora Serverless v2引入了多个改进,包括更细粒度的扩展、响应内存压力的缩放和动态调整的缓冲区缓存。最重要的改进是,它在实例层而非集群层上实施。这意味着,在一个 Aurora集群中,您可以同时拥有预配置实例和 Aurora Serverless v2 实例。
AWS 为 Aurora Serverless v2 和预配置实例重新构建了数据 API,以满足大型客户所需的规模和高可用性。以下是一些改进内容:
接下来,我们将讨论数据 API 的其他改进和设计注意事项,并演示如何将 Aurora Serverless v1 集群迁移到 AuroraServerless v2,配置数据 API,并使用此 API 执行查询。
记录 AWS账户内的事件,包括管理和数据事件。管理事件捕获基础设施的更改。例如,创建一个 (Amazon S3) 桶将创建一个管理事件。然而,对 S3桶中数据的更改会记录为数据事件。
Aurora Serverless v2 和预配置的 Data API 将 CloudTrail 事件记录为数据事件,而 Aurora Serverlessv1 的数据 API 捕获的事件则为管理事件。这一日志记录功能默认为禁用,但如果组织需要捕获通过数据 API应用的数据事件,可以启用该功能,费用相对较低。有关定价细节,请参见 。
在设计以数据 API 为基础的 Aurora Serverless v2 和预配置实例的应用程序时,有几个事项需要考虑。首先,数据 API每行的结果集大小限制为 64 KB。应用程序需确保每个返回的行大小不超过 64 KB。有关更多信息,请参见 。
现在我们已经介绍了 Aurora Serverless v2 和预配置的 Data API 的新特性,接下来让我们了解如何设置它。
Aurora Serverless v1 客户迁移到 Aurora Serverless v2 的第一步是调用 命令。此调用会创建现有 Aurora Serverless v1 集群的快照,并进行就地迁移,变更为单节点的 Aurora预配置集群。以下 AWS CLI 命令为将名为 asv1a 的 Aurora Serverless v1 集群升级为一个 db.r5.large类型的预配置集群的示例:
bash aws rds modify-db-cluster --db-cluster-identifier asv1a --engine-modeprovisioned --allow-engine-mode-change --db-cluster-instance-classdb.r5.large
请注意,根据您的特定工作负载,可能需要与 db.r5.large 不同的实例大小和类型。
由于数据 API 以前只与 Aurora Serverless v1结合使用,一些更适合预配置实例的工作负载不得不在无服务器实例中运行。利用此次更新,在修改数据库集群命令完成后,集群无需进一步修改。不过,如果工作负载更适合无服务器配置,您可以将集群中的 db.r5.large 单节点更换为 db.serverless,步骤分为两步。
第一步是设置集群的伸缩配置。可以使用以下命令完成此操作:
bash aws rds modify-db-cluster --db-cluster-identifier asv1a --serverless-v2-scaling-configuration MinCapacity=0.5,MaxCapacity=128
此命令指定 Aurora Serverless v2 节点的缩放范围为 0.5 ACU 至 128ACU。根据您的具体要求,可以设置不同的值。而且,这些值可以在将来进行更改。
下一步是将集群中现有的实例类型从 db.r5.large 修改为 db.serverless。这可以通过下面的命令完成:
bash aws rds modify-db-instance --db-instance-identifier asv1a-instance-1 --db-instance-class db.serverless --apply-immediately
请注意,这些步骤将导致一定的停机时间。有关以最小停机时间执行此升级的说明,请参见 。
无论您是刚刚升级了 Aurora Serverless v1 集群,还是已经拥有包含 Aurora Serverless v2或预配置实例的现有集群,配置数据 API 仅需两个步骤。
第一步是获取希望连接数据 API 的集群的 ARN。要获取该集群的 ARN,可以执行以下 AWS CLI 调用:
`bash aws rds describe-db-clusters --db-cluster-identifier asv1a --queryDBClusters 秘密的 ARN。
要创建 Secrets Manager 秘密并获取其 ARN,可以执行以下调用:
bash aws secretsmanager create-secret --name appsecret --description "DataAPI Secret" --secret-string "{\"username\":\"<username>\",\"password\":\"<password>\"}" --query ARN
确保前述代码中提供的用户凭据在数据库中存在且具有适当的权限。
在获取集群 ARN 和秘密 ARN 后,您可以使用 AWS SDK 编写如下 Python Boto3 示例代码:
rdsData = boto3.client("rds-data") cluster_arn = "" secret_arn = ""
# 如果数据库存在则删除
rdsData.execute_statement(resourceArn=cluster_arn, secretArn=secret_arn,
database="postgres", sql="drop database if exists testdb with (force);")
# 创建数据库
rdsData.execute_statement(resourceArn=cluster_arn, secretArn=secret_arn,
database="postgres", sql="create database testdb;")
# 创建表
rdsData.execute_statement(resourceArn=cluster_arn, secretArn=secret_arn,
database="testdb", sql="create table table01 (row_id int, rowvalvarchar(50));")
# 向表中插入行
for i in range(10): rdsData.execute_statement(resourceArn=cluster_arn,
secretArn=secret_arn, database="testdb", sql="insert into table01 (row_id,
rowval) values ({}, 'Hello World!');".format(i))
# 从表中选择行
response1 = rdsData.execute_statement(resourceArn=cluster_arn,
secretArn=secret_arn, database="testdb", sql="select * from table01;") for rowin response1["records"]: print(row) ```
## 与 AWS AppSync 集成以创建 GraphQL API
您可以使用数据 API 和 创建连接到 Aurora 数据库的
GraphQL API。AWS AppSync 是一项托管服务,使得连接您在 AWS 上的 Web 和移动应用程序与数据变得简单。现在,您可以直接将
Aurora Serverless v2 和预配置数据库连接到 AWS AppSync,并利用 AWS AppSync JavaScript解析器在数据库上运行 SQL 语句。Web 和移动应用程序可以通过 AWS AppSync API 与数据库交互,而无需启动其他资源。要了解有关 AWSAppSync 的更多信息以及如何为 Aurora 数据库构建应用程序 API,请参见 。
## 总结
在这篇文章中,我们查看了数据 API 被扩展以支持 Aurora Serverless v2 以及预配置实例。这使您能够充分利用 Aurora 平台与数据
API。此外,请求限制已被移除,允许处理更大和更复杂的工作负载。现在就开始使用
吧!
* * *
## 作者介绍
删除)
**Steve Abraham** 是亚马逊网络服务的首席解决方案架构师。他与我们的客户合作,提供数据库项目的指导和技术支持,帮助他们在使用 AWS时提升解决方案的价值。
Leave a Reply