What is lifecycle?

Controls how Terraform manages resources during create, update, and destroy operations.

Syntax:

resource "type" "name" {
  # ... resource config

  lifecycle {
    # lifecycle rules here
  }
}

Lifecycle Options

1.create_before_destroy

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.


2. prevent_destroy

Prevents accidental deletion of critical resources.

lifecycle {
  prevent_destroy = true
}

Effect: terraform destroy will fail for this resource → safety lock.