Terraform Providers · Terraform systems note
Terraform Provider Aliases Are Part of a Module's Public Interface
Provider configurations carry account, region and credential context. A reusable module that needs aliases is declaring runtime dependencies, not merely HCL syntax.
A provider plugin describes resource types. A provider configuration describes where and with which credentials those resource operations happen.
Aliases are named execution contexts
Multiple AWS aliases can represent different accounts or regions. Resources and modules can explicitly choose one.
Root modules should own environment context
Reusable child modules usually declare provider requirements while callers inject concrete provider configurations. That keeps credentials and region/account choices at the composition boundary.
Alias expectations are module API
If a module needs both primary and disaster-recovery regions, consumers must know which provider aliases it expects and what each means.
Implicit defaults can surprise you
If all configurations are aliased and a resource forgets to select one, Terraform may have an implied empty default configuration. Make the intended default obvious or wire providers explicitly.
Provider aliases describe which control plane a resource belongs to. That makes them part of module architecture.