通过CloudFormation创建Serverless V2 Aurora PostgreSQL失败,控制台可正常创建
解决CloudFormation创建Aurora Serverless V2 PostgreSQL集群时的"serverless引擎模式当前不可用"错误
问题分析
控制台可成功创建,但CloudFormation报错,核心原因在于模板的几个关键配置错误:
- 多余的DBInstance资源:Aurora Serverless V2是集群级的无服务器架构,不需要手动创建
AWS::RDS::DBInstance资源。控制台创建时会自动跳过实例创建步骤,但CloudFormation中添加该资源会触发引擎模式冲突。 - YAML语法错误:
DatabaseName字段的写法不符合YAML规范,导致配置解析异常。 - 缺失Serverless V2缩放配置:CloudFormation创建Serverless V2集群时,需要明确指定
ServerlessV2ScalingConfiguration,控制台默认填充的配置在CloudFormation中不会自动生成。 - 不必要的可用区指定:手动指定
AvailabilityZones可能与区域内Serverless V2的可用区支持范围冲突。
修正后的CloudFormation模板
# Database auroraCluster: Type: AWS::RDS::DBCluster Properties: AutoMinorVersionUpgrade: true DatabaseName: publisher DeletionProtection: !If [isProd, true, false] Engine: aurora-postgresql EngineMode: serverless EngineVersion: '14.6' # 明确Serverless V2缩放配置,根据业务需求调整容量范围 ServerlessV2ScalingConfiguration: MinCapacity: 0.5 MaxCapacity: 128 ManageMasterUserPassword: true MasterUsername: postgres MasterUserSecret: SecretArn: !Ref secretRds
关键修改说明
- 移除
auroraInstance资源:Serverless V2集群会自动管理计算节点的缩放,无需单独创建实例。 - 修正
DatabaseName语法:将换行缩进的写法改为直接赋值,符合YAML规范。 - 添加
ServerlessV2ScalingConfiguration:指定最小/最大计算容量,这是创建Serverless V2集群的必要配置。 - 移除
AvailabilityZones:Serverless V2集群会自动在区域内的可用区分布资源,手动指定可能引发兼容性问题。 - 布尔值改为原生类型:将
'true'/'false'替换为true/false,符合CloudFormation的参数要求。
额外排查点
- 验证区域兼容性:通过AWS CLI执行
aws rds describe-db-engine-versions --engine aurora-postgresql --engine-version 14.6 --region eu-north-1,确认该区域支持对应版本的Serverless V2模式。 - 检查IAM权限:确保CloudFormation执行角色拥有
rds:CreateDBCluster、secretsmanager:UpdateSecret等必要权限。
内容的提问来源于stack exchange,提问作者r.r
相关产品推荐
相关产品推荐

