【问题标题】:Terraform ALB error "Error creating LB Listener Rule: Priority X is currently in use" when changing rule hostname更改规则主机名时,Terraform ALB 错误“创建 LB 侦听器规则时出错:当前正在使用优先级 X”
【发布时间】:2019-10-09 23:12:11
【问题描述】:

尝试更改现有 ALB 规则中的主机名时,总是出错:

“创建 LB 侦听器规则时出错:PriorityInUse: Priority '40' is current in use”

尝试了来自 here 的建议,但没有任何帮助。尝试不为 TargetGroup 指定名称,使用 create_before_destroy,名称的随机字符串等。Terraform 版本 0.10.7,AWS 提供商 1.54.0(也尝试过 2.10.0)

在后续应用 Terraform 时,将应用更改。

TF 配置:

resource "aws_lb_listener_rule" "rule1" {
  depends_on = ["aws_lb_target_group.tg1"]
    lifecycle {
    create_before_destroy = true
  }
  listener_arn = "${aws_lb_listener.listener.arn}"
  priority = "40"
  action {
    type             = "forward"
  target_group_arn = "${aws_lb_target_group.tg1.id}"
  }
  condition {
    field  = "host-header"
    values = ["www.hostname.com"]
  }
  condition {
    field  = "path-pattern"
    values = ["/STATIC"]
  }
}



resource "aws_lb_target_group" "tg1" {
  lifecycle {
    create_before_destroy = true
  }
port = "443"
protocol = "HTTPS"
vpc_id   = "${var.vpc_id}"
health_check {
interval = "10"
path = "/"
  port= "443"
  protocol = "HTTPS"
  timeout = "9"
  healthy_threshold  = "5"
  unhealthy_threshold  = "3"
  }
  tags {
    Name = "${terraform.workspace}-service1"
   }
}

我希望一旦您更改 ALB 规则中的主机名,Terraform 将毫无问题地处理该更改,但看起来它正在尝试使用新主机名但具有相同的优先级编号重新创建 ALB 规则,因此它失败了。再次运行 terraform apply 后,它会进行更改。

可能有一些变通方法来检查现有 ALB 规则优先级名称并指定一个新的/不同的,但这应该由 Terraform 本地处理,否则我们需要跟踪优先级编号以避免冲突。

有人遇到过同样的问题并以某种方式解决了吗?

提前致谢。

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    事实证明,问题的发生是因为我配置新 ALB 规则资源的方式;每次我使用与现有优先级编号冲突的新资源名称(规则 2、规则 3 等)创建 TF ALB 规则资源时。因此解决方案是在新资源中使用新的优先级编号,或者每次都保持资源名称相同(规则1),在这种情况下,Terraform 会正确处理更改。

    【讨论】:

    • 在我的情况下,我已经拥有优先级 LB,我只需更改该资源 "aws_lb_listener_rule" "api" { priority = 20 ...},其中 20 是任何可用的 lb 优先级
    猜你喜欢
    • 2020-11-23
    • 2018-12-18
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2021-10-02
    相关资源
    最近更新 更多