Источник данных aws_subnet
возвращает отдельную подсеть, а не список, и вы, кажется, не зацикливаетесь на ней с count
.
Если вы ожидаете, что будет возвращено несколько подсетей, вам, вероятно, вместо этого понадобится aws_subnet_ids
источник данных .
Поэтому, если вы хотите создать цель монтирования EFS в каждой подсети, которая соответствует фильтру подсети, вы можете использовать следующее:
resource "aws_efs_file_system" "master_efs" {
creation_token = "master"
performance_mode = "generalPurpose"
kms_key_id = "${data.terraform_remote_state.kms_ebs.outputs.key_arn}"
encrypted = "true"
tags = {
Name = "master"
Environment = "${var.environment}"
Terraform = "true"
}
}
data "aws_subnet_ids" "app_subnet" {
vpc_id = "${data.aws_vpc.cng.id}"
tags = {
Name = "${var.search_pattern_app}"
}
}
resource "aws_efs_mount_target" "master_mt" {
file_system_id = "${aws_efs_file_system.master_efs.id}"
count = "${length(var.availability_zones)}"
subnet_id = "${data.aws_subnet.app_subnet.ids[count.index]}"
security_groups = ["${aws_security_group.sg.id}"]
}
Находит все подсети с именем, совпадающим с переменной search_pattern_app
, и создает цели монтирования EFS в каждой из них.