Я пытаюсь развернуть лямбда-функцию с условным выражением в блоке vpc_config. Я попытался использовать счетчик внутри vpc_config, но там невозможно использовать оператор подсчета. В соответствии с документацией для ресурса, если вы передадите пустые списки следующим образом, часть vpc_config игнорируется:
vpc_config {
subnet_ids = []
security_group_ids = []
}
Я могу подтвердить, что это работает должным образом (не предпринимается попытка конфигурации VPC).
Поэтому я попытался использовать условные выражения для subnet_ids и security_group_ids - что-то вроде «var.vpc_function? Var.subnet_ids: []» - но вы не можете передать список в условном выражении. Самое близкое к решению, которое я получил, - это хакерское число, приведенное ниже, которое объединяет, а затем разбивает списки:
resource "aws_lambda_function" "lambda_function" {
...
vpc_config {
subnet_ids = ["${split(",", var.vpc_function ? join(",", var.subnet_ids) : join(",", var.empty_array))}"]
security_group_ids = ["${split(",", var.vpc_function ? join(",", aws_security_group.lambda_security_group.*.id) : join(",", var.empty_array))}"]
}
variable "vpc_function" {
default = "false"
}
variable "subnet_ids" {
type = "list"
default = ["subnet-a", "subnet-b"]
}
variable "empty_array" {
type = "list"
default = []
}
Это применимо в первый раз, когда vpc_function имеет значение true или false, что отлично, но гдеvpc_function имеет значение false, terraform всегда рассматривает вышеизложенное как изменение при каждом повторном применении:
vpc_config.#: "0" => "1"
vpc_config.0.security_group_ids.#: "0" => "1"
vpc_config.0.security_group_ids.0: "" => ""
vpc_config.0.subnet_ids.#: "0" => "1"
vpc_config.0.subnet_ids.0: "" => ""
Я полагаю, проблема в том, что мой список присоединенных к разделению не отображается как [], а скорее как списокс некоторым (пустым) содержанием.
У кого-нибудь еще есть решение для этого? Я тоже пытался использовать terraform 12, но не смог понять;может быть, кто-то сделал что-то подобное в terraform 12 и может дать несколько указателей?