Terraform中能否使用变量作为Map的键配置环境变量?
问题解答
Terraform支持将变量作为Map的键,但你当前的语法不正确,直接写var.env_name = true会报错。正确的写法是用插值语法把变量包裹起来作为键,示例如下:
environment_variables = { "S3_BUCKET" = var.s3_bucket, "${var.env_name}" = true, }
如果你的Terraform版本在0.12及以上,也可以用更简洁的括号形式:
environment_variables = { "S3_BUCKET" = var.s3_bucket, (var.env_name) = true, }
针对你提到的「所有自定义环境变量以TAG_为前缀」的需求,推荐用merge函数结合for表达式来批量处理,这样更灵活易维护。举个完整例子:
假设你定义了一个存放自定义标签的变量:
variable "custom_tags" { type = map(any) default = { ENV = "prod" SERVICE = "payment" } }
然后生成带TAG_前缀的环境变量,再和固定的S3_BUCKET变量合并:
environment_variables = merge( # 固定的环境变量 { "S3_BUCKET" = var.s3_bucket }, # 批量给自定义标签添加TAG_前缀 { for tag_key, tag_value in var.custom_tags : "TAG_${tag_key}" => tag_value } )
这样最终生成的environment_variables会是:
{ "S3_BUCKET" = "your-bucket-name" "TAG_ENV" = "prod" "TAG_SERVICE" = "payment" }
完全符合你给Lambda函数配置带前缀环境变量的需求。
内容的提问来源于stack exchange,提问作者user7692855
相关产品推荐
相关产品推荐

