使用 CDK 是否可以在创建默认子网后对其进行修改?
With CDK is it possible to modify the default subnets after they have been created?
我创建了这样一个 VPC
vpc = new Vpc(theStack, vpcName,
VpcProps.builder()
.cidr("10.0.0.0/16")
.build());
在 eu-west-1 中,默认情况下我得到 3 个 public 和 3 个私有子网。私有子网将有一个 NAT 网关。
现在,我们正试图删除 NAT 网关(因为成本),所以我尝试了这个
vpc = new Vpc(theStack, vpcName,
VpcProps.builder()
.maxAzs(3)
.cidr("10.0.0.0/16")
.subnetConfiguration(List.of(
SubnetConfiguration.builder()
.subnetType(SubnetType.PUBLIC)
.name("Public")
.cidrMask(24)
.build(),
SubnetConfiguration.builder()
.subnetType(SubnetType.ISOLATED)
.name("Private")
.cidrMask(24)
.build()))
.build());
在新堆栈中创建它工作正常。我得到一个 VPC,其子网与以前相同,但没有 NAT GW:s。但是,运行 修改上面创建的 VPC,导致名称冲突。
有什么方法可以让我cdk/cloudformation明白我想修改现有的私有子网而不是创建新的?
我仔细检查了在没有指定子网的情况下创建的子网。 cdir-mask 是 /19 而不是我在第二个版本中输入的 /24。
因此,将 cidrMask 更改为 19 就可以了。现在 CloudFormation 不会创建新的子网并删除 NAT 网关。
我创建了这样一个 VPC
vpc = new Vpc(theStack, vpcName,
VpcProps.builder()
.cidr("10.0.0.0/16")
.build());
在 eu-west-1 中,默认情况下我得到 3 个 public 和 3 个私有子网。私有子网将有一个 NAT 网关。
现在,我们正试图删除 NAT 网关(因为成本),所以我尝试了这个
vpc = new Vpc(theStack, vpcName,
VpcProps.builder()
.maxAzs(3)
.cidr("10.0.0.0/16")
.subnetConfiguration(List.of(
SubnetConfiguration.builder()
.subnetType(SubnetType.PUBLIC)
.name("Public")
.cidrMask(24)
.build(),
SubnetConfiguration.builder()
.subnetType(SubnetType.ISOLATED)
.name("Private")
.cidrMask(24)
.build()))
.build());
在新堆栈中创建它工作正常。我得到一个 VPC,其子网与以前相同,但没有 NAT GW:s。但是,运行 修改上面创建的 VPC,导致名称冲突。
有什么方法可以让我cdk/cloudformation明白我想修改现有的私有子网而不是创建新的?
我仔细检查了在没有指定子网的情况下创建的子网。 cdir-mask 是 /19 而不是我在第二个版本中输入的 /24。
因此,将 cidrMask 更改为 19 就可以了。现在 CloudFormation 不会创建新的子网并删除 NAT 网关。