使用CDK创建ServerlessCluster报错:请求的Serverless引擎模式不可用
下面是针对你遇到的问题的具体排查和解决步骤:
1. 替换不兼容的参数组
Aurora Serverless集群需要使用适配Serverless模式的参数组,你当前引用的通用默认参数组(default.aurora-postgresql${RDS_MAJOR_VERSION})不支持Serverless引擎模式。
修改参数组代码,创建CDK管理的Serverless兼容参数组:
const AURORA_POSTGRES_ENGINE_VERSION = rds.AuroraPostgresEngineVersion.VER_15_2; // 替换原参数组代码,创建适配Serverless的参数组 const parameterGroup = new rds.ParameterGroup(this, 'ServerlessPgParamGroup', { engine: rds.DatabaseClusterEngine.auroraPostgres({ version: AURORA_POSTGRES_ENGINE_VERSION }), // 按需添加自定义参数,无需求可留空 });
2. 升级CDK版本到兼容版本
若你的CDK版本过低,可能尚未支持PostgreSQL 15.2的Serverless模式。执行以下命令升级:
# 全局升级CDK CLI npm install -g aws-cdk # 升级项目内的CDK依赖 npm update aws-cdk-lib @aws-cdk/aws-rds
3. 移除冲突的子网配置
你同时指定了vpcSubnets和subnetGroup,这会导致配置冲突,影响Serverless集群的创建逻辑。移除subnetGroup参数,让CDK通过vpcSubnets自动生成符合要求的子网组:
dbCluster = new rds.ServerlessCluster(this, 'Database', { parameterGroup, engine: engine, credentials: rdsCredentials, scaling:{ minCapacity: rds.AuroraCapacityUnit.ACU_2, maxCapacity: rds.AuroraCapacityUnit.ACU_8, }, removalPolicy: cdk.RemovalPolicy.DESTROY, clusterIdentifier: `ol${targetEnv}`, defaultDatabaseName :metaInfo['dbDatabase'], vpc:vpc, vpcSubnets:vpc.selectSubnets({ subnetType: ec2.SubnetType.PUBLIC }), // 移除subnetGroup配置 });
4. 验证区域与资源规格兼容性
虽然控制台能创建,但部分区域对Serverless v2的ACU范围或其他参数有特定要求。若上述步骤无效,可尝试将ACU范围调整为通用支持的1-16测试。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

