Controls how Terraform manages resources during create, update, and destroy operations.
Syntax:
resource "type" "name" {
# ... resource config
lifecycle {
# lifecycle rules here
}
}
Default behavior: Terraform destroys old resource first, then creates new one.
Problem: Downtime during replacement.
Solution:
lifecycle {
create_before_destroy = true
}
Effect: Creates new resource first → then destroys old one → zero downtime.
Example:
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
lifecycle {
create_before_destroy = true # new EC2 first, then delete old
}
}
Use case: Load balancers, databases, anything needing zero downtime.
Prevents accidental deletion of critical resources.
lifecycle {
prevent_destroy = true
}
Effect: terraform destroy will fail for this resource → safety lock.