创建AWS Aurora Serverless V2集群是否需配置读写DB实例?
关于Aurora Serverless V2集群与DBInstance的创建说明
核心结论
是的,必须创建至少一个AWS::RDS::DBInstance,否则你的Aurora集群会一直卡在“创建中”状态无法完成初始化。
原因解释
Aurora采用分层架构:
AWS::RDS::DBCluster仅负责管理集群全局配置(如引擎类型、凭据、缩放规则、备份策略等),本身不提供计算能力;AWS::RDS::DBInstance是实际的计算节点(读写实例),集群必须关联至少一个计算节点才能完成初始化流程,进入可用状态。
AWS控制台向导默认创建两个实例(一个writer+一个reader)是为了提供高可用架构,但这不是强制要求——你可以只创建一个writer实例,集群也能正常运行;如果需要读写分离或高可用,再添加额外的reader实例即可。
代码修正与优化建议
你的现有代码存在引用不一致问题:集群的DBClusterIdentifier是db-test-cluster,但实例里用了!Ref auroraServerlessCluster,需要统一资源逻辑ID。以下是修正后的示例:
集群资源(调整逻辑ID方便引用)
auroraServerlessCluster: Type: AWS::RDS::DBCluster DeletionPolicy: Delete Properties: DBClusterIdentifier: db-test-cluster Engine: aurora-postgresql MasterUsername: username_from_secrets_manager MasterUserPassword: password_from_secrets_manager ServerlessV2ScalingConfiguration: MinCapacity: 0.5 MaxCapacity: 2 BackupRetentionPeriod: 1 DatabaseName: test-db EngineMode: provisioned Port: 5432 Tags: - Key: "Name" Value: db-test-cluster
必选的Writer实例(第一个加入集群的实例自动成为Writer)
dbInstanceWriter: Type: AWS::RDS::DBInstance Properties: Engine: aurora-postgresql DBInstanceClass: db.serverless DBClusterIdentifier: !Ref auroraServerlessCluster Tags: - Key: "Name" Value: db-test-writer
可选的Reader实例(用于高可用/读写分离)
dbInstanceReader: Type: AWS::RDS::DBInstance Properties: Engine: aurora-postgresql DBInstanceClass: db.serverless DBClusterIdentifier: !Ref auroraServerlessCluster PromotionTier: 1 # 降低该实例升级为Writer的优先级,默认值即为1 Tags: - Key: "Name" Value: db-test-reader
补充说明
- 无需手动指定实例角色:Aurora会自动将第一个加入集群的实例设为Writer,后续添加的实例默认是Reader;
- 若需调整故障转移优先级,可通过
PromotionTier属性设置(值越小优先级越高,0为最高优先级)。
内容的提问来源于stack exchange,提问作者Garbit
相关产品推荐
相关产品推荐

