Khai báo nhiều provider block với alias, rồi chỉ định provider cho từng resource.
hcl
provider "aws" { region = "ap-southeast-1" }
provider "aws" {
alias = "us_east"
region = "us-east-1"
}
resource "aws_acm_certificate" "cdn" {
provider = aws.us_east # CloudFront bat buoc cert o us-east-1
domain_name = "acme.vn"
}Các trường hợp thường cần: cert cho CloudFront, DR ở region thứ hai, và kiến trúc multi-account (mỗi env một account, dùng assume_role).
Khi truyền vào module, module phải khai báo rõ nó cần provider nào:
hcl
module "dr" {
source = "./modules/service"
providers = { aws = aws.us_east }
}Để module tự khai báo provider bên trong sẽ gây rắc rối khi cần gỡ module.
Và gom nhiều account vào một state làm blast radius rất rộng — hạ tầng lớn thì tách state theo account rồi nối bằng data source an toàn hơn.