更改规则主机名时 Terraform ALB 错误 "Error creating LB Listener Rule: Priority X is currently in use"
Terraform ALB error "Error creating LB Listener Rule: Priority X is currently in use" when changing rule hostname
尝试更改现有 ALB 规则中的主机名时,总是出现错误:
"Error creating LB Listener Rule: PriorityInUse: Priority '40' is currently 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 再次应用后,它会进行更改。
可能有变通方法来检查现有的 ALB 规则优先级名称并指定一个 new/different 优先级名称,但这应该由 Terraform 本机处理,否则我们需要跟踪优先级编号以避免冲突。
有没有人遇到同样的问题并以某种方式解决了?
提前致谢。
事实证明,问题的发生是因为我配置新 ALB 规则资源的方式;每次我使用与现有优先级编号冲突的新资源名称(规则 2、规则 3 等)创建 TF ALB 规则资源时。因此,解决方案是要么在新资源中使用新的优先级编号,要么每次都保留相同的资源名称(规则 1),在这种情况下,Terraform 会正确处理更改。
尝试更改现有 ALB 规则中的主机名时,总是出现错误:
"Error creating LB Listener Rule: PriorityInUse: Priority '40' is currently 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 再次应用后,它会进行更改。
可能有变通方法来检查现有的 ALB 规则优先级名称并指定一个 new/different 优先级名称,但这应该由 Terraform 本机处理,否则我们需要跟踪优先级编号以避免冲突。
有没有人遇到同样的问题并以某种方式解决了?
提前致谢。
事实证明,问题的发生是因为我配置新 ALB 规则资源的方式;每次我使用与现有优先级编号冲突的新资源名称(规则 2、规则 3 等)创建 TF ALB 规则资源时。因此,解决方案是要么在新资源中使用新的优先级编号,要么每次都保留相同的资源名称(规则 1),在这种情况下,Terraform 会正确处理更改。