- 20, Oct 2024
- #1
Я пытаюсь проверить карту объектов, которая напечатана, как показано ниже:
for_each
Значение переменной выглядит так:
The condition for variable "ecs_config_map" can only refer to the variable itself, using var.ecs_config_map.
Теперь я хочу выполнить базовую проверку, но, похоже, не могу правильно понять синтаксис.
validation {
condition = can(for task in var.ecs_config_map : contains(["EC2", "FARGATE", "EXTERNAL"], task["launch_type"]))
error_message = "Only EC2, FARGATE, EXTERNAL are allowed values for launch_type."
}
Это бросило for
Отладка включена var.ecs_config_map[*]
described :
> type(var.ecs_config_map)
map(
object({
capabilities: list(string),
cpu: number,
desired: number,
launch_type: string,
memory: number,
}),
)
> type(var.ecs_config_map["driver"])
object({
capabilities: list(string),
cpu: number,
desired: number,
launch_type: string,
memory: number,
})
> type(var.ecs_config_map[*])
tuple([
map(
object({
capabilities: list(string),
cpu: number,
desired: number,
launch_type: string,
memory: number,
}),
),
])
что указывало на то, что моя проблема заключалась в том, что я пытался перебрать все объекты в переменной. Я использую выражение знака при выполнении terraform console
which converts the whole map into a tuple of maps of objects.
Затем я попытался использовать Invalid value for "list" parameter: list of bool required.
expression to perform the validation
validation {
condition = contains(["EC2", "FARGATE", "EXTERNAL"], var.ecs_config_map[*]["launch_type"])
error_message = "Only EC2, FARGATE, EXTERNAL are allowed values for launch_type."
}
И меня бросили ecs_config_map = {
driver = {
cpu = 256
memory = 512
desired = 0
capabilities = ["FARGATE"]
launch_type = "FARGATE"
}
aggregator = {
cpu = 256
memory = 512
desired = 0
capabilities = ["FARGATE"]
launch_type = "FARGATE"
}
}
variable "ecs_config_map" {
type = map(object({
cpu = number
memory = number
desired = number
capabilities = list(string)
launch_type = string
}))
}
did not work either.
Я где-то испортил синтаксис проверки? Или я требую слишком многого от terraform, пытаясь проверить сложный тип?
#терраформировать