如何移除Terraform Registry中AWS VPC模块附带的IGW?
2.77.0版本AWS VPC模块移除自动附加IGW的配置方法
terraform-aws-modules/vpc/aws 2.77.0版本的默认逻辑为:只要配置了非空的公有子网列表,就会自动完成三件事:创建Internet Gateway、将IGW关联到目标VPC、给所有公有子网的专属路由表添加0.0.0.0/0指向IGW的默认公网路由。
要移除这套自动附加的IGW关联流程,直接调整模块内置参数即可:
- 核心配置项:在模块块内新增
create_igw = false
这个参数的默认值为true,保持默认时模块会自动执行上述所有IGW关联操作;设置为false后,模块会完全跳过所有IGW相关的创建、路由绑定流程,不会再自动把IGW的公网路由附加到公有子网。 - 调整后的配置参考:
module "vpc" { source = "terraform-aws-modules/vpc/aws" version = "2.77.0" # 原有VPC、子网的其他配置保持不变 create_igw = false }
关键注意点
- 该调整不会破坏原有公有子网的创建逻辑,你配置的子网网段、可用区关联、
map_public_ip_on_launch(子网内实例自动分配公网IP开关)等配置都会正常生效,只是不会自动生成公网下一跳的路由。 - 不要混淆参数的作用范围:
map_public_ip_on_launch仅控制实例公网IP的自动分配,就算把这个参数设为false,只要create_igw保持默认值,模块依然会自动创建并关联IGW。 - 后续如果需要给公有子网配置自定义的公网出口(比如自管IGW、传输网关、第三方安全网关),可以基于模块输出的公有子网路由表ID,手动创建对应的路由规则,和模块现有逻辑不会冲突。
- 如果你的需求是仅移除公有子网指向IGW的默认路由、但保留IGW资源本身,2.77.0版本没有提供单独的开关参数实现这个效果,更推荐直接关闭模块自动创建IGW的逻辑,再手动搭建需要的IGW和路由关联,避免手动修改Terraform状态带来的配置不一致问题。
内容的提问来源于stack exchange,提问作者SUBHAS PATIL
相关产品推荐
相关产品推荐

