如何将AWS CDK的InstanceClass枚举映射为实际的AWS DocumentDB实例类型
问题原因
报错是因为InstanceClass.STORAGE2枚举对应的是AWS D2系列存储优化实例,这类实例不支持DocumentDB,所以部署时触发了参数无效错误。
解决方法
有两种方案可以正确配置DocumentDB支持的实例类型:
- 方案1:使用正确的枚举映射
DocumentDB支持的实例系列和InstanceClass枚举的对应关系如下:- R5 内存优化实例 →
InstanceClass.MEMORY5 - R6g Graviton2内存优化实例 →
InstanceClass.MEMORY6_GRAVITON2 - R4 内存优化实例 →
InstanceClass.MEMORY4 - T3 突发性能实例 →
InstanceClass.BURSTABLE3
如果你需要用r5.large,把对应代码替换为:
.instanceType(InstanceType.of(InstanceClass.MEMORY5, InstanceSize.LARGE)) - R5 内存优化实例 →
- 方案2:直接传入实例类型字符串
和TypeScript示例的逻辑一致,Java CDK也支持直接解析字符串格式的实例类型,不用手动匹配枚举,写法更简单不容易出错:.instanceType(InstanceType.parse("r5.large"))
修改后的完整代码示例
DatabaseCluster dbCluster = DatabaseCluster.Builder.create(scope, "ApiDocDb") .dbClusterName(dataProps.getTableName()) .masterUser(Login.builder() .username(masterUsername) .password(SecretValue.plainText(masterPwd)) .build()) // 替换为你需要的实例类型写法即可 .instanceType(InstanceType.parse("r5.large")) .vpc(Vpc.Builder.create(scope, "DocDB-VPC") .cidr("10.2.0.0/16") .build()) .vpcSubnets(SubnetSelection.builder().subnetType(SubnetType.PUBLIC).build()) .build();
注意:部署前请确认你使用的AWS区域支持你选择的DocumentDB实例类型,避免出现区域不兼容的报错。
内容的提问来源于stack exchange,提问作者Marco Massenzio
相关产品推荐
相关产品推荐

