如何将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
相关产品推荐
相关产品推荐

