Terraform,无法使用多值路径模式规则创建ALB规则

时间:2019-05-07 05:59:03

标签: amazon-web-services amazon-ec2 aws-sdk terraform

如屏幕截图所示,AWS ALB规则在路径规则上允许多个匹配条件:

enter image description here

  

如何在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来赚钱。每个都需要几个用于服务路由的路径规则。这就是为什么我要在每个规则中整合多个路径。如果我不必为每个路径制定一条规则,这将为我的公司每月节省几百美元。

1 个答案:

答案 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"] }