关于AWS CloudFormation创建/重建默认VPC及标记的技术问询
1. 是否存在用于创建默认VPC的AWS CloudFormation模板?
没有官方提供的专门用于创建默认VPC的CloudFormation模板。默认VPC是AWS为每个区域自动生成的特殊资源,CloudFormation的AWS::EC2::VPC资源没办法直接把一个VPC标记成默认状态——这个标识是AWS内部管控的,没法通过模板参数或属性来设置。
2. 删除默认VPC后,能否通过CloudFormation模板重建它?
不能用CloudFormation模板直接重建真正的默认VPC。你可以用CloudFormation创建一个配置和默认VPC完全一致的VPC(比如用172.31.0.0/16的CIDR、创建默认规格的子网、绑定互联网网关等),但这个VPC不会被AWS标记为"默认VPC"。要恢复默认VPC,只能通过CLI命令aws ec2 create-default-vpc或者AWS控制台里的"创建默认VPC"按钮来操作。
3. 是否存在标识默认VPC的特定标记?
AWS不会自动给默认VPC添加专属标记,但你可以通过EC2 API/CLI返回结果里的IsDefault属性来识别它。如果需要用标记区分,你可以手动给默认VPC添加自定义标记(比如IsDefaultVPC: true),但这不是AWS原生自带的。
4. 通过CLI执行aws ec2 create-default-vpc时返回的JSON包含"IsDefault": true,"InstanceTenancy": "default",若同时设置"CidrBlock": "172.31.0.0/16",能否在CloudFormation模板中使用这些参数将创建的VPC标记为默认VPC?
不行。CloudFormation的AWS::EC2::VPC资源不支持设置IsDefault属性——这个属性是AWS分配给默认VPC的内部状态,完全没法通过模板参数或资源属性手动指定。哪怕你在模板里把CIDR、InstanceTenancy都设置得和默认VPC一模一样,创建出来的也只是个普通VPC,不会被标记为默认VPC。只有create-default-vpc命令或控制台的对应操作才能生成真正的默认VPC。
内容的提问来源于stack exchange,提问作者art vanderlay

