Day-08 AWS Terraform 메타 인수 | count, depends_on, for_each

발행: (2025년 12월 3일 오전 03:12 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Cover image for → Day-08 AWS Terraform Meta Arguments | count, depends_on, for_each

Terraform는 메타 인수를 이해하면 훨씬 사용하기 쉬워집니다. 이 인수들은 몇 개의 리소스를 만들지, 어떻게 연결할지, 그리고 Terraform이 이를 어떻게 추적할지를 결정하는 데 도움을 줍니다. 이 글에서는 가장 많이 사용되는 세 가지 메타 인수인 count, for_each, depends_on을 자세히 살펴봅니다.

AWS 인프라를 Terraform으로 구축할 때, 특히 여러 리소스를 만들거나 순서를 관리해야 할 경우 반드시 알아두어야 할 내용입니다.

1. count: 여러 리소스를 손쉽게 생성

count는 간단한 숫자를 사용해 동일한 리소스의 여러 인스턴스를 만들 수 있게 해줍니다. 리소스 생성을 스케일링하는 가장 직관적인 방법입니다.

Example

resource "aws_s3_bucket" "bucket_example" {
  count  = 3
  bucket = "my-bucket-${count.index}"
}

How it works

  • count = 3은 세 개의 버킷을 생성합니다.
  • 각 리소스는 0, 1, 2 인덱스를 갖습니다.
  • 인덱스를 이용해 고유한 이름이나 태그를 만들 수 있습니다.

When to use

  • 리소스가 서로 동일할 때.
  • 간단한 숫자 기반 스케일링이 필요할 때.
  • 순서가 중요하지 않을 때.

2. for_each: 안정적인 식별자를 가진 리소스 생성

for_eachcount보다 유연하고 안전하며, 특히 프로덕션 환경에서 권장됩니다. 맵이나 세트를 기반으로 리소스를 만들며, 각 리소스에 안정적인 식별자를 부여합니다.

Example

resource "aws_s3_bucket" "bucket_foreach" {
  for_each = toset(["bucket-a", "bucket-b"])

  bucket = each.value
}

How it works

  • 숫자 인덱스 대신 each.keyeach.value를 사용합니다.
  • 리스트 순서가 바뀌어도 리소스 식별자는 변하지 않습니다.
  • 각 리소스가 고유한 논리적 항목을 나타낼 때 이상적입니다.

When to use

  • 리소스 이름이 안정적으로 유지되어야 할 때.
  • 리스트, 세트, 맵 등 컬렉션으로부터 리소스를 만들 때.
  • 인덱스 이동으로 인한 재생성을 방지하고 싶을 때.

3. depends_on: 리소스 생성 순서 제어

Terraform는 보통 의존성을 자동으로 감지합니다. 하지만 일부 상황에서는 명시적인 순서 지정이 필요하며, 이때 depends_on이 유용합니다.

Example

resource "aws_s3_bucket" "primary" {
  bucket = "primary-bucket"
}

resource "aws_s3_bucket" "secondary" {
  bucket     = "secondary-bucket"
  depends_on = [aws_s3_bucket.primary]
}

How it works

  • secondaryprimary 이후에만 생성되도록 보장합니다.
  • 두 리소스를 직접 연결하는 참조가 없을 때 유용합니다.
  • 생성 및 삭제 순서를 완전히 제어할 수 있습니다.

When to use

  • 한 리소스가 다른 리소스보다 먼저 존재해야 할 때.
  • IAM 역할, 어태치먼트, 권한, 혹은 모듈 간 연결 등에 사용합니다.
  • Terraform이 자동으로 의존성을 판단하지 못할 때.

Conclusion

Terraform 메타 인수는 대규모 인프라 관리에 핵심적인 역할을 합니다. count를 사용하면 리소스를 빠르게 복제할 수 있고, for_each를 통해 예측 가능하고 안정적인 리소스 식별자를 얻으며, depends_on을 통해 의존성 순서를 완전히 제어할 수 있습니다. 이 기능들을 함께 활용하면 AWS용 Terraform 구성을 더 깔끔하고 안전하며 유지보수가 쉬운 형태로 작성할 수 있습니다. 이러한 기본기를 마스터하면 신뢰할 수 있는 프로덕션‑레디 인프라스트럭처를 코드로 구현하는 기반이 됩니다.

References

  • (Add any relevant links or documentation here)
Back to Blog

관련 글

더 보기 »

S3에 Terraform 상태 저장

S3를 Terraform 백엔드로 구성하기 Terraform은 상태를 S3 버킷에 저장할 수 있습니다. 아래는 S3 백엔드를 설정하는 최소 구성 예시입니다: hcl terrafor...