Terraform创建网关负载均衡器时出现应用负载均衡器参数如何移除?
解决Terraform创建网关负载均衡器时自动添加ALB参数的问题
问题原因
你遇到的情况是因为Terraform的AWS Provider中,aws_lb是通用资源类型,同时支持应用负载均衡器(ALB)、网络负载均衡器(NLB)和网关负载均衡器(GWLB)。那些自动出现的参数是Provider为ALB类型设置的默认值,虽然GWLB本身不支持这些HTTP相关配置,但Provider会统一填充默认值,导致在terraform plan中显示出来。
解决方案
要移除这些参数的显示,你可以在aws_lb资源块中显式将这些参数设置为null。Terraform中,将参数设为null会告诉Provider忽略该参数,不会将其纳入状态文件或plan输出中。修改后的代码如下:
resource "aws_lb" "gateway_lb" { name = "GWLB01" # 注意添加引号,避免被识别为未定义变量 load_balancer_type = "gateway" enable_cross_zone_load_balancing = true enable_deletion_protection = true subnets = ["subnet-xxxxx", "subnet-yyyy"] # 子网ID建议添加引号 # 显式设置参数为null,移除plan中的默认值显示 drop_invalid_header_fields = null enable_http2 = null enable_waf_fail_open = null idle_timeout = null }
补充说明
另外注意你原代码中name和subnets的内容未加引号,这在Terraform中会被当作变量引用,若未定义对应变量会触发报错,建议加上引号修正。
这些参数设为null后,不会对GWLB的实际配置产生任何影响——因为GWLB本身不支持这些配置项,Provider会自动忽略它们,同时terraform plan的输出里就不会再出现这些无关参数了。
内容的提问来源于stack exchange,提问作者Maya Ray
相关产品推荐
相关产品推荐

