Я пытаюсь создать модуль в Terraform, который может быть создан несколько раз с различными переменными входами. Внутри модуля, как мне ссылаться на ресурсы, когда их имена зависят от входной переменной? Я пытаюсь сделать это с помощью синтаксиса ("${aws_ecs_task_definition[var.name].arn}"
), но я просто догадался об этом.Ссылаясь на ресурсы с именами переменных в Terraform
(Оговорка: я мог бы идти об этом в совершенно неправильный путь)
Вот мой модуля (упрощенно) main.tf
файл:
variable "name" {}
resource "aws_ecs_service" "${var.name}" {
name = "${var.name}_service"
cluster = ""
task_definition = "${aws_ecs_task_definition[var.name].arn}"
desired_count = 1
}
resource "aws_ecs_task_definition" "${var.name}" {
family = "ecs-family-${var.name}"
container_definitions = "${template_file[var.name].rendered}"
}
resource "template_file" "${var.name}_task" {
template = "${file("task-definition.json")}"
vars {
name = "${var.name}"
}
}
Я получаю следующее сообщение об ошибке:
Error loading Terraform: Error downloading modules: module foo: Error loading .terraform/modules/af13a92c4edda294822b341862422ba5/main.tf: Error reading config for aws_ecs_service[${var.name}]: parse error: syntax error
Кроме того, видимо, вы не можете интерполировать имена ресурсов. (Тем не менее?) –
Поскольку это стоит, это не полезный ответ для кого-либо другого с аналогичной проблемой. Я бы посоветовал вам либо переработать ответ, чтобы объяснить, почему произошла ошибка, и как его исправить (в частности, сосредоточиться на том, что вы не можете интерполировать имена ресурсов) или удалить комманду вопросов/ответов. – ydaetskcoR
@ydaetskcoR, хороший звонок. Я обновил свой ответ, чтобы уточнить, но я также прекрасно разбираюсь в этом вопросе/ответе, если это не полезно никому другому. –