Terraform配置aws_lb_listener_rule时query_string仅最后一条生效如何解决
问题根因
你的现有逻辑错误地将单个监听器规则内的多个query_string条件拆分为了多个独立的监听器规则实例,每个实例仅保留一个query_string配置,最终只有最后生成的实例会生效,所以只看到了最后一个query_string规则。
调整方案
需要修改两处核心配置:
1. 调整local值的扁平化逻辑,保留单个监听器规则下的全部query_string配置
删除lb_listener_rule_flat_list中针对query_string索引的循环层,直接将整个query_string列表存入规则属性:
locals { # 其余local值保持不变,仅修改lb_listener_rule_flat_list如下 lb_listener_rule_flat_list = flatten([ for lb in var.lb : [ for lb_listener in lookup(lb, "lb_listener", []) : [ for rule_idx, lb_listener_rule in lookup(lb_listener, "lb_listener_rule", []) : { lb_name = lb.name lb_listener_rule_index = rule_idx lb_listener_rule_listener_arn = aws_lb_listener.lb_listener[lb.name].arn lb_listener_rule_action_type = lb_listener_rule.action.type lb_listener_rule_action_fixed_response = lookup(lb_listener_rule.action, "fixed_response", {}) != {} ? { content_type = lb_listener_rule.action.fixed_response.content_type message_body = lookup(lb_listener_rule.action.fixed_response, "message_body", null) } : null # 直接保存当前规则下的全部query_string列表,不按条目拆分 lb_listener_rule_condition_query_strings = lookup(lb_listener_rule.condition, "query_string", []) } ] ] ]) # 其余local值保持不变 }
2. 调整监听器规则资源的dynamic块逻辑,遍历生成全部query_string块
修改aws_lb_listener_rule资源的condition块,遍历当前规则的全部query_string列表生成多个query_string配置:
resource "aws_lb_listener_rule" "lb_listener_rule" { for_each = local.lb_listener_rule_map listener_arn = each.value.lb_listener_rule_listener_arn action { type = each.value.lb_listener_rule_action_type dynamic "fixed_response" { for_each = each.value.lb_listener_rule_action_fixed_response != null ? [{}] : [] content { content_type = each.value.lb_listener_rule_action_fixed_response.content_type message_body = each.value.lb_listener_rule_action_fixed_response.message_body } } } condition { # 遍历当前规则下所有query_string条目,生成对应配置块 dynamic "query_string" { for_each = each.value.lb_listener_rule_condition_query_strings content { key = lookup(query_string.value, "key", null) value = query_string.value.value } } } }
调整后重新执行terraform plan即可看到符合预期的多query_string条件配置。
内容的提问来源于stack exchange,提问作者user6005619
相关产品推荐
相关产品推荐

