count 매개변수 사용 시 아래와 같은 제약사항이 있습니다.
- 인라인 블록에
 count사용 지원하지 않음
- 전체 리소스를 반복할 수는 있지만 리소스 내에서 인라인 블록을 반복할 때, count 사용은 지원하지 않습니다.
 
- 수정 시 발생하는 에러
 
- 배열의 중간 항목을 제거하면 모든 항목이 1칸씩 앞으로 당겨집니다.
 - 즉 count 사용 시, 목록 중간 항목을 제거하면 테라폼은 해당 항목 뒤에 있는 모든 리소스를 삭제한 다음 해당 리소스를 처음부터 다시 만듭니다.
 
리소스의 여러 복사본을 만들 때는 count 대신 for_each 를 사용하는 것이 바람직합니다.
따라서 for each 표현식을 사용해 vpc를 생성하는 실습을 진행했습니다.
for_each 표현식을 사용하면 리스트 lists, 집합 sets, 맵 maps 를 사용하여 전체 리소스의 여러 복사본 또는 리소스 내 인라인 블록의 여러 복사본, 모듈의 복사본을 생성 할 수 있습니다.
resource "<PROVIDER>_<TYPE>" "<NAME>" {
  for_each = <COLLECTION>
  [CONFIG ...]
}
COLLECTION 은 루프를 처리할 집합 또는 맵
리소스에 for_each 를 사용할 때, 리스트는 지원 안함
CONFIG 는 해당 리소스와 관련된 하나 이상의 인수로 구성되는데, CONFIG 내에서 each.key또는 each.value 를 사용하여 COLLECTION 에서 현재 항목의 키와 값에 접근할 수 있음
# public subnet
resource "aws_subnet" "pub_sub" {
  for_each                = var.public_subnet
  vpc_id                  = aws_vpc.vpc.id
  cidr_block              = each.value["cidr"]
  availability_zone       = each.value["az"]
  map_public_ip_on_launch = false
  tags = {
    Name = "${var.tags}-${each.key}"
  }
}
맵에서 값만 반환하는 내장 함수 values 사용 가능
output "pub_sub_ids" {
  value = aws_subnet.pub_sub.*
}
output "dev_pri_sub_ids" {
  value = values(aws_subnet.dev_pri_sub)[*].id
}
for_each 를 사용한 후에는 하나의 리소스 또는 count 를 사용한 것과 같은 리소스 배열이 되는 것이 아니라 리소스 맵 list into a set 이 됩니다.
Outputs:
dev_pri_sub_ids = [
  "subnet-0457a9a5e265772e4",
  "subnet-08b233055afe17048",
]
pub_sub_ids = [
  {
    pub-sub-2a = {
      "availability_zone" = "ap-northeast-2a"
      "availability_zone_id" = "apne2-az1"
      "cidr_block" = "10.60.4.0/24"
      "id" = "subnet-0caaebfec80d80359"
      "tags" = tomap({
        "Name" = "T101-pub-sub-2a"
      })
      "vpc_id" = "vpc-0473c85bd926f6873"
    },
    pub-sub-2c = {
      "availability_zone" = "ap-northeast-2c"
      "availability_zone_id" = "apne2-az3"
      "cidr_block" = "10.60.5.0/24"
      "id" = "subnet-0aaaf57e88b761897"
      "tags" = tomap({
        "Name" = "T101-pub-sub-2c"
      })
      "vpc_id" = "vpc-0473c85bd926f6873"
    },
  }
]
완성 코드는 제 깃허브에 올려놨습니다 참고 부탁드립니다 :)
https://github.com/euneun316/terraform-study/tree/main/T101/WEEK5/vpc