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

如何将Terraform Map变量展开为独立参数?

实现方法

你的思路完全正确,用dynamic配合for_each就是解决这类重复块生成问题的标准方式,大概率是之前的语法细节没处理对。下面是可直接运行的实现代码:

variable "mymap" {
  type = map(string)
  default = {
    "key1" = "val1"
    "key2" = "val2"
  }
}

resource "aws_elasticache_parameter_group" "default" {
  name   = "cache-params"
  family = "redis2.8"

  dynamic "parameter" {
    # 遍历mymap变量的所有键值对
    for_each = var.mymap
    content {
      # 用迭代项的key和value分别填充parameter块的name和value字段
      name  = parameter.key
      value = parameter.value
    }
  }
}

关键细节说明

  • dynamic "parameter"中的parameter必须和目标资源的块名完全匹配,这里对应ElastiCache参数组的parameter块
  • 遍历map时,for_each = var.mymap会将每个键值对作为独立迭代项
  • content块内部的parameter.key和parameter.value里的parameter是dynamic块的标签名,你也可以改成param这类自定义名称,只要前后统一即可

执行terraform plan就能看到生成的参数块和你期望的结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:55:42