У меня есть сценарий Terraform step_function, который вызывает функцию Lambda для отправки электронной почты. Я хочу отправить тело письма в виде такой переменной:
data "template_file" "start_es_email" {
template = "${file("email_template/start_es.html")}"
}
data "template_file" "start_template" {
template = "${file("step_function/start_stepfunction.json")}"
vars = {
aws_region = "${var.aws_region}",
ses_sender = "${var.ses_sender}"
ses_destination_email = "${var.ses_destination_emails}"
ses_body_html = "${data.template_file.start_es_email.rendered}"
}
}
Это содержимое файла start_es.html, это простой HTML-контент:
<html>
<body>
<h1>ElasticSearch cluster started and ready</h1>
<p>
The ElasticSearch cluster has started and ready to use
</p>
</body>
</html>
Это ресурс функции состояния:
resource "aws_sfn_state_machine" "start_cluster" {
name = "start-es-sfn-${var.environment}"
role_arn = "${aws_iam_role.step_function_iam_role.arn}"
definition = "${data.template_file.start_template.rendered}"
}
И это то, что у меня есть в файле json функции состояния:
"SendSuccessEmail": {
"Type": "Task",
"Resource": "${lambda_notification}",
"Parameters": {
"SES_SENDER": "${ses_sender}",
"SES_DESTINATION_EMAIL": "${ses_destination_email}",
"SUBJECT": "${ses_subject}",
"BODY_HTML": "${ses_body_html}"
},
"End": true
},
Теперь при вызове terraform apply я получаю эту ошибку:
Ошибка: InvalidDefinition: недопустимое определение конечного автомата: 'INVALID_JSON_DESCRIPTION: Недопустимый символ без кавычек ((CTRL-CHAR, код 10)): для включения в строковое значение необходимо экранировать с помощью обратной косой черты
Я попытался сделать html-контент одной строкой вот так:
<html><body><h1>ElasticSearch cluster started and ready</h1><p>The ElasticSearch cluster has started and ready to use</p></body></html>
и он работает нормально, но читать и поддерживать такой файл нехорошо.
Есть ли способ решить эту проблему?
Спасибо.