我要将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']
});
答案 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"
})