Terraform Advanced — Provider Aliasing
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.