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 не включает ограничение для этого поставщика.

/ provider-veriosing

В field а также valuesбыли объявлены устаревшими в версии 2.x провайдера aws, как показано здесь. В версии провайдера 3.x они удалены и больше не действительны, как показано в новой документации для блока условий.

Это дополнительно объясняется в официальном "Руководстве по обновлению Terraform AWS Provider версии 3":

Таким образом, вам нужно либо перенести свой код для работы с поставщиком aws 3.x, либо вернуться к использованию более старой версии.

Другие вопросы по тегам