【发布时间】:2019-02-04 11:19:46
【问题描述】:
在另一个 thread I have asked 中,如何在 AWS 中保持 ECS task definitions 处于活动状态。因此,我计划像这样更新任务定义:
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 插值函数来消除新行和空格,但是我仍然需要转义双引号,以便 AWS API 接受请求。
如何安全地准备由data.template_file.task_definition.rendered 生成的字符串?我正在寻找这样的东西:
原始字符串:
{
"key": "value",
"another_key": "another_value"
}
准备好的字符串:
{\"key\":\"value\",\"another_key\":\"another_value\"}
【问题讨论】:
标签: amazon-web-services terraform aws-cli hcl