В другой теме я спросил , как сохранить определения задач ECS активными в AWS. В результате я планирую обновить определение задачи следующим образом:
resource "null_resource" "update_task_definition" {
triggers {
keys = "${uuid()}"
}
# Workaround to prevent older task definitions being deactivated
provisioner "local-exec" {
command = <<EOF
aws ecs register-task-definition \
--family my-task-definition \
--container-definitions ${data.template_file.task_definition.rendered} \
--network-mode bridge \
EOF
}
}
data.template_file.task_definition
- это источник данных шаблона, который предоставляет шаблон JSON из файла. Однако это не работает, поскольку JSON содержит новые строки и пробелы.
Я уже понял, что могу использовать интерполяционную функцию replace
, чтобы избавиться от новых строк и пробелов, однако мне все еще требуется экранировать двойные кавычки, чтобы API-интерфейс AWS принимал запрос.
Как можно безопасно подготовить строку, полученную из data.template_file.task_definition.rendered
? Я ищу что-то вроде этого:
Необработанная строка:
{
"key": "value",
"another_key": "another_value"
}
Подготовленная строка:
{\"key\":\"value\",\"another_key\":\"another_value\"}