我是terraform的新手,我正尝试使用Terraform在AWS中部署lambda函数并将环境变量从JSON文件传递到terraform。我无法在main.tf或tfvars文件中设置这些值,因为对于每个部署的lambda,这些env变量都会有所不同。
我尝试使用jq从JSON中提取值并将其放入文件中,然后将这些值传递给变量,但是当我运行terraform init命令时出现错误。
下面是值在JSON文件中的显示方式。
"environment": {
"value1": "aa",
"value2": "aa",
"value3": "aa",
"value4": "aa",
"value5": "aa",
"value6": "aa"
},
在我的main.tf中,我将环境部分设置为这样,以便可以通过这些值进行传递。我将envVars变量设置在variable.tf文件中,然后在运行terraform init和terraform apply命令时将其传递。
environment {
variables {
"${var.envVars}"
}
}
我想发生的是,以上值将以所需的格式在terraform文件中设置,以便terraform可以读取它。
environment {
variables {
value1 = "",
value2 = "",
value3 = "",
value4 = "",
value5 = "",
value6 = ""
}
}
答案 0 :(得分:0)
考虑使用map
类型来管理这些值。
variable "envVars" {}
variable "environment" {
type = "map"
default = {
dev = "<value_1>"
uat = "<value_2>"
prod = "<value_3>"
}
}
因此,在您的tf代码中,您可以轻松地引用为"${var.environment[var.envVars]}"