terraform aws_lb_listener_rule аргумент условия не распознается в terraform 0.12.20
Получение этой ошибки в aws_lb_listener_rule
Ошибка: неподдерживаемый аргумент
в....\euc-terraformcontrol-alb\alb.tf, строка 127, в ресурсе "aws_alb_listener_rule", "alb_listener_rule": 127: field = "${element(split(",", var.listener_rule_field), count.index)}"
Аргумент с именем "поле" здесь не ожидается.
Ошибка: неподдерживаемый аргумент
на....\euc-terraformcontrol-alb\alb.tf, строка 128, в ресурсе "aws_alb_listener_rule", "alb_listener_rule": 128: values = ["${element(split(",", var.listener_rule_value), count. индекс)}"]
resource "aws_alb_listener_rule" "alb_listener_rule" {
count = "${length(compact(split(",", var.priority))) > 0 ? "${length(compact(split(",", var.priority)))}" : 0}"
listener_arn = "${var.listener_arn}"
priority = "${element(split(",", var.priority), count.index)}"
action {
type = "forward"
target_group_arn = "${element(split(",", var.target_group_arn), count.index)}"
}
condition {
//field = "${element(split(",", var.listener_rule_field), count.index)}"
//values = "${element(split(",", var.listener_rule_value), count.index)}"
}
}
1 ответ
Это критические изменения в новой версии
В более старой версии мы могли использовать приведенный ниже код для условной маршрутизации.
condition {
field = "host-header"
values = ["api.example.com"]
}
Измените конфигурацию Terraform, чтобы использовать
host_header
или же
path_pattern
блок конфигурации вместо этого.
Таким образом, вышеуказанное условие станет
condition {
host_header {
values = ["api.example.com"]
}
}
Если вы запускаете код на какой-либо платформе CI/CD, лучше добавить версию в конфигурацию, чтобы избежать такой проблемы в будущем и сохранить совместимость кода.
provider "aws" {
version = "~> 2.31.0"
}
Версия
meta-argument
определяет ограничение версии дляprovider
, и работает так же, как аргумент версии в блоке required_providers. Ограничение версии в конфигурации поставщика используется только в том случае, если required_providers не включает ограничение для этого поставщика.
В field
а также values
были объявлены устаревшими в версии 2.x провайдера aws, как показано здесь. В версии провайдера 3.x они удалены и больше не действительны, как показано в новой документации для блока условий.
Это дополнительно объясняется в официальном "Руководстве по обновлению Terraform AWS Provider версии 3":
Таким образом, вам нужно либо перенести свой код для работы с поставщиком aws 3.x, либо вернуться к использованию более старой версии.