如何在AWS CDK TypeScript中为VPC指定自定义子网CIDR
问题
我是AWS CDK TypeScript新手,原本以为实现该功能很简单,但实际遇到了困难。我希望在创建VPC时指定3个子网:2个公有子网、1个私有子网,具体CIDR如下:
- Public01: 10.10.5.0/24
- Public02: 10.10.10.0/24
- Private01: 10.10.15.0/24
但当前代码创建的子网CIDR为10.10.0.0/24、10.10.1.0/24和10.10.2.0/24,并非我想要的。我的代码如下:
const myvpc = new ec2.Vpc(this, 'MyVPC', { maxAzs: 1, natGateways: 0, cidr: '10.10.0.0/16', subnetConfiguration: [ { cidrMask: 24, name: 'Outside', subnetType: ec2.SubnetType.PUBLIC, }, { cidrMask: 24, name: 'Management', subnetType: ec2.SubnetType.PUBLIC, }, { cidrMask: 24, name: 'Inside', subnetType: ec2.SubnetType.PRIVATE_ISOLATED, }, ], });
请问该如何实现自定义子网CIDR的配置?
解决方案
AWS CDK 默认会自动从VPC的CIDR块中按顺序分配子网CIDR,要指定自定义的子网CIDR,只需在subnetConfiguration的每个子网配置对象中添加cidrBlock属性,直接设置你需要的CIDR值即可,同时可以去掉cidrMask(因为已经通过cidrBlock明确指定了掩码)。
修改后的代码如下:
const myvpc = new ec2.Vpc(this, 'MyVPC', { maxAzs: 1, natGateways: 0, cidr: '10.10.0.0/16', subnetConfiguration: [ { cidrBlock: '10.10.5.0/24', name: 'Outside', subnetType: ec2.SubnetType.PUBLIC, }, { cidrBlock: '10.10.10.0/24', name: 'Management', subnetType: ec2.SubnetType.PUBLIC, }, { cidrBlock: '10.10.15.0/24', name: 'Inside', subnetType: ec2.SubnetType.PRIVATE_ISOLATED, }, ], });
需要注意:
- 每个子网的
cidrBlock必须完全包含在VPC的CIDR范围内(此处为10.10.0.0/16),否则会触发部署报错。 - 确保所有子网的CIDR块唯一且无重叠。
内容的提问来源于stack exchange,提问作者slurm
相关产品推荐
相关产品推荐

