CDK 在 VPC 上创建子网

问题描述 投票:0回答:1

我正在尝试在 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 设置,如果这些是愚蠢的问题,我深表歉意!

aws-cdk amazon-vpc cidr
1个回答
0
投票

默认情况下,您的 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,
    }
  ]
})
© www.soinside.com 2019 - 2024. All rights reserved.