Можно ли в Terraform 0.12.xx изменить ключи на карте вместо их соответствующих значений? Предположим, что у нас есть следующее в определении модуля:
locals {
task_logging = [
for k, v in var.task_logging_options : {
name = trimprefix(k,"TASK_LOGGING_")
value = v
}
]
}
Однако trimprefix
здесь применяется только к значению.
Затем внизу я создаю определение задачи для ECS service:
{...}
"logConfiguration": {
"logDriver": "awsfirelens",
"secretOptions": [],
"options": ${jsonencode(local.task_logging_options)}
},
{...}
И, наконец, при создании экземпляра модуля я передаю task_logging_options
следующим образом:
task_logging_options = {
TASK_LOGGING_Name = "es"
TASK_LOGGING_Host = "some.host"
}
Где локальная функция должна удалить префикс TASK_LOGGING_
для создания JSON объект для конфигурации Fluentbit.
Конечным результатом должен быть объект, аналогичный фрагменту из плана терраформирования:
~ logConfiguration = {
logDriver = "awsfirelens"
~ options = {
- Buffer_Size = "False" -> null
- HTTP_Passwd = "READACTED" -> null
- HTTP_User = "READACTED" -> null
- Host = "READACTEDd" -> null
- Index = "READACTED" -> null
- Name = "es" -> null
- Port = "READACTED" -> null
+ TASK_LOGGING_Host = "some.host"
+ TASK_LOGGING_Name = "es"
- Tls = "On" -> null
- Trace_Output = "On" -> null
}
secretOptions = []
}