Terraform Advanced — Provider Aliasing

less than 1 minute read

Use multiple instances of the same provider with different configurations.


Multi-Region AWS

provider "aws" {
  region = "us-east-1"
}

provider "aws" {
  alias  = "west"
  region = "us-west-2"
}

# Primary region
resource "aws_vpc" "east" {
  cidr_block = "10.0.0.0/16"
}

# Secondary region
resource "aws_vpc" "west" {
  provider   = aws.west
  cidr_block = "10.1.0.0/16"
}

Passing Aliases to Modules

module "replica_db" {
  source = "./modules/rds"

  providers = {
    aws = aws.west
  }

  db_name = "replica"
}

Inside the module:

# modules/rds/providers.tf
terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
    }
  }
}

# All resources in this module use the passed-in provider
resource "aws_db_instance" "this" {
  # Uses aws.west automatically
}

When to Use Aliases

✅ Multi-region deployments (primary + DR)
✅ Cross-account resources (audit account + workload account)
✅ Multi-cloud (AWS + GCP)
❌ Same region, same account → don't alias

What’s Next?

Combine multiple cloud providers in one module.

← Multi-Cloud Multiple Providers →

Updated: