从 JSON 文件中提取 env 变量并将变量传递给地形



我是 terraform 的新手,我正在尝试使用 Terraform 在 AWS 中部署 lambda 函数并将环境变量从 JSON 文件传递到 terraform。 我无法在 main.tf 或 tfvars 文件中设置这些值,因为这些 env 变量对于部署的每个 lambda 都是不同的。

我尝试使用 jq 从 JSON 中提取值并将它们放入文件中,然后将这些值传递给变量,但是当我运行 terraform init 命令时,我收到错误。

下面是这些值在 JSON 文件中的外观。

"environment": {
    "value1": "aa",
    "value2": "aa",
    "value3": "aa",
    "value4": "aa",
    "value5": "aa",
    "value6": "aa"
  },

在我的 main.tf 中,我设置了环境部分,以便可以通过这些值传递。 我在 variable.tf 文件中设置了 envVars 变量,然后在运行 terraform init 和 terraform apply 命令时传递它。

environment {
   variables {
       "${var.envVars}"
      }
    }

我希望发生的是,上述值将以所需的格式在地形文件中设置,以便地形可以读取它。

environment {
   variables {
     value1 = "",
     value2 = "",
     value3 = "",
     value4 = "",
     value5 = "",
     value6 = ""
  }
}

思考使用map类型来管理这些值。

variable "envVars" {}
variable "environment" {
  type = "map"
  default = {
    dev = "<value_1>"
    uat = "<value_2>"
    prod = "<value_3>"
  }
}

因此,在您的 tf 代码中,您可以轻松地引用为 "${var.environment[var.envVars]}"

最新更新