Provider inheritance defines how Terraform modules access AWS credentials and region configuration.
A root module owns the provider configuration. Child modules declare the provider they require, but do not create credentials or regions. Terraform connects the two through inheritance.
When no mapping is defined, Terraform uses implicit inheritance. The child module automatically uses the caller’s default provider. This works for simple, single-region deployments.
Explicit provider mapping removes ambiguity. The providers argument binds a child’s provider reference to a specific configuration in the root module. This becomes necessary when multiple configurations exist.
Aliases introduce multiple provider instances. Each alias represents a different region or account. Child modules must declare which aliases they accept, and the caller must pass them explicitly.
Provider blocks inside child modules shift control away from the caller. This hides access decisions and reduces module reuse across environments.
Provider inheritance is not just syntax. It defines where access control lives in your infrastructure.

