AWS-CDK错误:此VPC中没有“公共”子网。使用其他VPC子网选择

时间:2019-07-11 01:23:49

标签: aws-cdk

我要将CDK堆栈从0.30.0移植到0.39.0。我从我的AWS账户中获得了预定义的VPC,我只是将其导入到堆栈中。同一子网在0.30.0中可以正常工作,但在0.39.0中却收到错误消息:

“此VPC中没有'公共'子网。请使用其他VPC子网选择。”

我的堆栈中有一个VPC和3个子网。我也有一个通往dynamodb和s3的网关。

有人遇到过这个问题吗?

除了导入VPC,我尝试删除所有其他代码。

在0.30.0中,我使用这些行,没有问题。

vpc = ec2.VpcNetwork.import(this, 'myvpc', {
  vpcId: 'vpc-xxxxxxxxxxxxxxxx',
  availabilityZones: ['ap-southeast-2a','ap-southeast-2b','ap-southeast-2c'],
  privateSubnetIds: ['subnet-xxxxxxxxxxxx', 'subnet-xxxxxxxxxxxx', 'subnet-xxxxxxxxxxxx']
});

在0.39.0中,我将其更改为:

vpc = ec2.Vpc.fromVpcAttributes(this, 'myvpc', {
  vpcId: "vpc-xxxxxxxxxxxxxxxx",
  availabilityZones: ['ap-southeast-2a','ap-southeast-2b','ap-southeast-2c'],
  privateSubnetIds: ['subnet-xxxxxxxxxxxx', 'subnet-xxxxxxxxxxxx', 'subnet-xxxxxxxxxxxx']
});

2 个答案:

答案 0 :(得分:0)

我今天了解到cdk希望对公共子网进行标记。严重的是,即使从cdk 1.5.0开始,您也需要:

标签:密钥:aws-cdk:子网类型值:公共

答案 1 :(得分:0)

我需要指定在导入vpc期间要使用的子网:

const vpc = ec2.Vpc.fromLookup(this, "vpc", {
                vpcName: props.vpcName,
                isDefault: (!props.vpcName),
                subnetGroupNameTag: "Public subnet"
            })