如何在Terraform 3.0中使用变量作为属性名称?

特拉纳格

是否可以通过某种方式从变量创建任意属性?这是我想要达到的目标。

我目前的操作方式(目前在3.0.0中已弃用):

resource "aws_lb_listener_rule" "example" {
  condition {
    field  = var.condition_field
    values = var.condition_values
  }
}

新语法需要带有条件字段的嵌套块。但是我的条件存储在一个变量中:

resource "aws_lb_listener_rule" "example" {
  condition {
    var.condition_field {
      values = var.condition_values
    }
  }
}

是否可以通过某种方式从变量创建任意属性?

或:是否可以将嵌套的属性块存储在变量中?


我的问题的背景:我目前正在尝试从2.70.0升级到3.0.0,并且我的系统中有很多重大更改。其中之一包括aws_lb_listener_rule如果无法通过变量创建属性,则必须固定版本或更改大量项目使用的模块API。

特拉纳格

实际上似乎无法做到这一点。我发现的关闭操作使我可以使用3.0.0,而无需更改模块变量,并且所有使用它的Terraform脚本都是动态条件块。

dynamic "condition" {
  for_each = var.field == "path-pattern" ? [var.field] : []
  content {
    path_pattern {
      values = var.patterns
    }   
  }
}

对所有可能的var.field重复此操作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章