3
私は、さまざまな変数入力で複数回インスタンス化できるモジュールを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、よろしくお願いします。明確にするために私の答えを更新しましたが、他の人にとって役に立たない場合は、この質問/回答コンボを削除しても問題ありません。 –