如屏幕截图所示,AWS ALB规则在路径规则上允许多个匹配条件:
如何在Terraform中完成相同的工作?
当我尝试在Terraform中创建此条件时:
resource "aws_lb_listener_rule" "test" {
listener_arn = "<<arn_scrubbed>>"
priority = 25
action {
type = "forward"
target_group_arn = "${aws_lb_target_group.mytarget.arn}"
}
condition {
field = "path-pattern"
values = ["/account.php", "/client*"]
}
condition {
field = "host-header"
values = ["dev01site.example.com"]
}
}
Terraform将引发错误:attribute supports 1 item maximum, config has 2 declared
如果这样尝试:
resource "aws_lb_listener_rule" "test" {
listener_arn = "<<arn_scrubbed>>"
priority = 25
action {
type = "forward"
target_group_arn = "${aws_lb_target_group.mytarget.arn}"
}
condition {
field = "path-pattern"
values = ["/account.php"]
}
condition {
field = "path-pattern"
values = ["/client*"]
}
condition {
field = "host-header"
values = ["dev01site.example.com"]
}
}
在这种情况下,它会抛出A rule can only have one 'path-pattern' condition
是否无法(通过Terraform)执行AWS控制台允许的这些操作,还是我的语法错误?
注意:如果您想知道-由于每个ALB限制为100条规则,我想合并规则。尝试使用主机/路径组合规则在多个开发环境中使用1 ALB来赚钱。每个都需要几个用于服务路由的路径规则。这就是为什么我要在每个规则中整合多个路径。如果我不必为每个路径制定一条规则,这将为我的公司每月节省几百美元。
答案 0 :(得分:1)
我还遇到了类似的问题,即主机头值有多个值。
下面的链接帮助我解决了这个问题。
https://github.com/terraform-providers/terraform-provider-aws/issues/12034
配置损坏:
condition {
field = "host-header"
values = var.host_names
}
应该做什么:
condition {
host_header {
values = var.host_names
}
}
并在变量文件中声明类型为list(string)的host_names变量
variable "host_names"{ type = list(string) default = ["abc.com", "xyz.com"] }