首页 > 解决方案 > Terraform,无法使用多值路径模式规则创建 ALB 规则

问题描述

如屏幕截图所示,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 用于多个开发环境,让我的钱物有所值。每个都需要多个路径规则来进行服务路由。这就是为什么我要为每个规则合并多个路径。如果我不必为每条路径制定一条规则,这将为我的公司每月节省几百美元。

标签: amazon-web-servicesamazon-ec2aws-sdkterraform

解决方案


对于主机头值的多个值,我也遇到了类似的问题。

下面的链接帮助我解决了这个问题。

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
}

}

并在变量文件中声明 host_names 变量,类型为 list(string)

variable "host_names"{ type = list(string) default = ["abc.com", "xyz.com"] }


推荐阅读