调用PRIVATE_WITH_NAT子网类型却报Deprecated_Private_NAT不存在错误求助
CDK版本与底层API的映射差异:
aws_ec2.SubnetType.PRIVATE_WITH_NAT是CDK封装的枚举值,但在部分CDK版本中,这个枚举会被转换为底层AWS API识别的旧标识Deprecated_Private_NAT。如果你的VPC中没有预先创建对应这个旧类型的子网组,就会触发该错误。子网类型的命名变更:AWS CDK后续版本对子网类型的命名做了调整,
PRIVATE_WITH_NAT原本对应旧的Deprecated_Private_NAT,后来被PRIVATE_WITH_EGRESS替代作为标准的带NAT访问的私有子网类型。如果你的代码依赖的CDK版本处于新旧命名过渡阶段,就可能出现这种枚举值和实际API标识不匹配的情况。VPC子网配置不匹配:当前你的VPC中只存在
Public类型的子网,没有配置符合旧Deprecated_Private_NAT类型的子网资源,而CDK在解析PRIVATE_WITH_NAT时尝试匹配旧标识,自然找不到对应资源。
升级CDK版本:将AWS CDK升级到较新的稳定版本,新版本中
PRIVATE_WITH_NAT已经被正确映射或替换为PRIVATE_WITH_EGRESS,不会再指向旧的Deprecated_Private_NAT标识。替换子网类型枚举:直接使用
aws_ec2.SubnetType.PRIVATE_WITH_EGRESS替代PRIVATE_WITH_NAT,这是当前CDK中标准的带NAT出站访问的私有子网类型,能正确匹配VPC中的对应子网资源。检查VPC子网配置:确认你的VPC中是否已创建带NAT网关的私有子网,如果没有,需要先通过CDK或AWS控制台创建对应类型的子网,再进行后续资源部署。
内容的提问来源于stack exchange,提问作者potato

