You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform如何通过模块变量为AWS资源设置provider值

核心原因

Terraform 不支持将 provider 作为字符串变量传递给资源的provider参数,provider 引用必须在规划阶段静态解析,需要通过模块内置的providers元参数传递 provider 对象,修改步骤如下:


步骤1:调整modules/codebuild子模块配置

删除input_aws_provider变量,添加 provider 声明,修改后的/modules/codebuild/codebuild.tf代码:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

variable "input_aws_env" {}

resource "aws_codebuild_project" "codebuild-iac" {
  name          = "${var.input_aws_env}-CodeBuild-IaC"
  # 其余原有配置保持不变,不需要手动指定provider参数
  # etc...
}

步骤2:调整MGMT模块的provider声明

在/MGMT目录下新增 provider 配置(可以直接加在cicd.tf顶部,也可以单独建versions.tf),声明需要接收的带别名provider:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
      configuration_aliases = [ aws.dev_us-east-1, aws.dev_us-west-2 ]
    }
  }
}

步骤3:修改根目录main.tf的MGMT模块调用,传入带别名的provider

module "MGMT" { 
  source                         = "./MGMT"
  count                           = var.aws_env == "MGMT" ? 1 : 0
  aws_env                      = var.aws_env

  # 新增providers配置,向下传递带别名的provider对象
  providers = {
    aws.dev_us-east-1 = aws.dev_us-east-1
    aws.dev_us-west-2 = aws.dev_us-west-2
  }
}

步骤4:修改/MGMT/cicd.tf的codebuild模块调用,通过providers参数指定对应provider

# create the codebuild resource in the assumed role's us-east-1 region
module "dev_cicd_iac_us_east_1" {
  source = "../modules/codebuild/"
  input_aws_env = var.dev_aws_env
  # 替换原有input_aws_provider变量,用providers元参数传provider
  providers = {
    aws = aws.dev_us-east-1
  }
}


# create the codebuild resource in the assumed role's us-west-2 region
module "dev_cicd_iac_us_west_2" {
  source = "../modules/codebuild/"
  input_aws_env = var.dev_aws_env
  providers = {
    aws = aws.dev_us-west-2
  }
}

修改完成后执行terraform init重新初始化模块,再执行terraform plan即可正常解析 provider。


内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:36:03