配置aws_alb_listener_rule多路径触发ValidationError,如何修复?
解决AWS ALB Listener Rule配置多个路径时的ValidationError问题
错误信息:修改LB监听器规则出错:ValidationError:最多可指定‘2’个条件,状态码:400,请求ID
我希望使用
aws_alb_listener_rule资源配置多个路径,但发现该资源的condition对象似乎无法接受多个值?以下是我的资源配置代码,运行时出现上述错误,请问该如何修复?resource "aws_alb_listener_rule" "admin_static" { listener_arn = "${aws_alb_listener.web_http.arn}" priority = 99 action { type = "forward" target_group_arn = "${aws_alb_target_group.ec2_web.arn}" } condition { field = "host-header" values = ["example.com"] } condition { field = "path-pattern" values = ["/admin/*"] } condition { field = "path-pattern" values = ["/static/*"] } }
问题根源
你碰到的这个错误本质是AWS ALB监听器规则的限制:同一种类型的条件只能定义一个condition块,但单个condition块的values参数支持传入多个值。你的代码里创建了两个path-pattern类型的condition块,加上一个host-header块,总共3个条件,超出了AWS单条规则允许的最大条件数(这里提示是2个),所以触发了ValidationError。
修复后的代码
把两个path-pattern的条件合并到同一个condition块中,用values数组承载多个路径规则即可:
resource "aws_alb_listener_rule" "admin_static" { listener_arn = "${aws_alb_listener.web_http.arn}" priority = 99 action { type = "forward" target_group_arn = "${aws_alb_target_group.ec2_web.arn}" } condition { field = "host-header" values = ["example.com"] } condition { field = "path-pattern" # 将多个路径规则放入同一个values数组 values = ["/admin/*", "/static/*"] } }
额外提示
- 每种条件类型(比如
host-header、path-pattern)在单条规则里只能有一个condition块,但values数组可以支持多值匹配,满足同一类型下的多个匹配需求。 - 如果你的场景需要不同路径对应不同的转发动作,那就要拆分出多条独立的
aws_alb_listener_rule资源,通过设置不同的priority来控制匹配顺序。
内容的提问来源于stack exchange,提问作者shinzyuku2017
相关产品推荐
相关产品推荐

