Terraform配置ALB时preserve_host_header参数报错求助
问题解决:ALB保留Host头配置报错
问题根源
你使用的AWS Provider版本(v4.15.1)不支持在aws_lb资源中直接设置preserve_host_header参数,该参数是在AWS Provider v4.48.0版本才引入到aws_lb资源中的。在旧版本中,该参数属于aws_lb_target_group资源的配置项。
两种解决方法
方法一:升级AWS Provider版本
修改Terraform配置中的provider约束,将AWS Provider版本升级到v4.48.0或更高:
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 4.48.0" } } }
执行以下命令升级provider:
terraform init -upgrade
升级完成后,你当前的aws_lb配置即可正常生效。
方法二:不升级Provider,通过目标组配置保留Host头
如果暂时无法升级Provider,可将preserve_host_header = true配置到目标组中(旧版本Provider支持该参数):
- 先创建带保留Host头配置的目标组:
resource "aws_lb_target_group" "apigw_target_group" { name = "prd-alb-toapigw-tg" port = 443 protocol = "HTTPS" vpc_id = var.vpc_id target_type = "ip" # 根据API Gateway的部署方式选择,若为公有端点可解析IP加入目标组 preserve_host_header = true health_check { path = "/" protocol = "HTTPS" matcher = "200-499" interval = 30 timeout = 5 healthy_threshold = 2 unhealthy_threshold = 2 } }
- 在ALB的监听器中关联该目标组(确保你有对应的listener配置):
resource "aws_lb_listener" "alb_listener" { load_balancer_arn = aws_lb.alb_to_api_gateway.arn port = "443" protocol = "HTTPS" certificate_arn = var.ssl_cert_arn default_action { type = "forward" target_group_arn = aws_lb_target_group.apigw_target_group.arn } }
完成后,ALB转发请求到API Gateway时会保留原始Host头。
内容的提问来源于stack exchange,提问作者Achi
相关产品推荐
相关产品推荐

