我正在尝试在 CDK 中的 AWS 上创建 2 个子网。
我最初关注帖子here但是我用完了IP地址
我得到的错误是
资源处理程序返回消息:“CIDR '12.0.0.0/25' 与另一个子网冲突
每个子网都会返回此错误。
const vpc = new ec2.Vpc(this, name, {
ipAddresses: IpAddresses.cidr('12.0.0.0/23'),
});
const publicOneSubnet = new ec2.Subnet(this, 'PublicOneSubnet', {
availabilityZone: 'eu-west-1a',
vpcId: vpc.vpcId,
cidrBlock: '12.0.0.0/25',
})
let publicOneSubnetRouteTable = publicOneSubnet.routeTable;
const publicTwoSubnet = new ec2.Subnet(this, 'PublicTwoSubnet', {
availabilityZone: 'eu-west-1b',
vpcId: vpc.vpcId,
cidrBlock: '12.0.0.128/25'
})
const privateOneSubnet = new ec2.Subnet(this, 'PrivateOneSubnet', {
availabilityZone: 'eu-west-1a',
vpcId: vpc.vpcId,
cidrBlock: '12.0.1.0/25'
})
const privateTwoSubnet = new ec2.Subnet(this, 'PrivateTwoSubnet', {
availabilityZone: 'eu-west-1b',
vpcId: vpc.vpcId,
cidrBlock: '12.0.1.128/25'
})
有人能告诉我我做错了什么吗……这让我想哭! 据我所知,
12.0.0.0/23
应该意味着 theres 12.0.1.0-255
和 12.0.0.0-255
.
12.0.0.0/25
应该表示 12.0.0.0-127
等等,所以我对这些冲突的方式有点困惑,我以前从未做过这种 VPC 设置,如果这些是愚蠢的问题,我深表歉意!
默认情况下,您的 VPC CIDR 将被平均分配,每个可用区将创建 1 个公共子网和 1 个私有子网(source)。
由于您没有在 VPC 上指定 CIDR 之外的任何内容,因此
maxAzs
将为 3,并且您将在这些可用区上创建总共 6 个子网。
如果您想控制 VPC 的子网,只需放弃手动创建子网并使用
subnetConfiguration
属性,同时指定您只需要 2 个可用区:
const vpc = new ec2.Vpc(this, name, {
ipAddresses: IpAddresses.cidr('12.0.0.0/23'),
maxAzs: 2,
subnetConfiguration: [
{
cidrMask: 25,
name: 'public',
subnetType: ec2.SubnetType.PUBLIC,
},
{
cidrMask: 25,
name: 'private',
subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
}
]
})