What is the difference between count and for_each?
Assesses fundamental understanding of Terraform & IaC conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
Both create multiple instances of a resource, but they track them differently.
- count takes a number and identifies instances by index, such as resource[0] and resource[1]. Removing an item from the middle shifts indexes and causes Terraform to recreate or destroy the wrong resources.
- for_each takes a map or set and identifies instances by stable keys, such as resource["web"] and resource["api"]. Adding or removing one key only affects that instance.
resource "aws_instance" "app" {
for_each = toset(["web", "api"])
ami = "ami-12345678"
instance_type = "t3.micro"
tags = { Name = each.key }
}
Use for_each when identity matters, such as per-environment or per-name resources. Use count for identical, interchangeable resources or simple conditional creation with count = var.enabled ? 1 : 0. Note that for_each keys must be known at plan time.
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.