遇到这个问题时,需要检查是否已经在 VPC 中为该 CIDR 分配了子网,如果是,则需要检查是否存在冲突的子网。如下所示:
const vpc = new ec2.Vpc(this, 'MyVpc', { cidr: '10.0.0.0/16', maxAzs: 2, subnetConfiguration: [ { cidrMask: 24, name: 'Public', subnetType: ec2.SubnetType.PUBLIC, }, { cidrMask: 24, name: 'Private', subnetType: ec2.SubnetType.PRIVATE, }, ], });
如上所示,当创建 VPC 时,需要为每个子网指定 CIDR。 如果其他的 AWS 资源已经在这些 CIDR 范围内分配了一个子网,那么在创建 VPC 时就会出现“VPC 子网与另一个子网冲突”的错误。
要解决这个问题,需要检查是否存在重叠的 CIDR,如果有,就需要调整 subnetConfiguration,使其不与其他子网 CIDR 冲突。修改方法如下所示:
const vpc = new ec2.Vpc(this, 'MyVpc', { cidr: '10.0.0.0/16', maxAzs: 2, subnetConfiguration: [ { cidrMask: 24, name: 'Public', subnetType: ec2.SubnetType.PUBLIC, }, { cidrMask: 24, name: 'Private', subnetType: ec2.SubnetType.PRIVATE, }, { cidrMask: 24, name: 'AnotherPublic', subnetType: ec2.SubnetType.PUBLIC, // 添加不同的 CIDR,避免与其他子网冲突 cidr: '10.0.1.0/24', }, ], });
如上所示,只需要向 VPC 中添加不同的 CIDR 即可避免冲突。