【问题标题】:terraform aws_lb_listener_rule conditionterraform aws_lb_listener_rule 条件
【发布时间】:2020-04-26 04:16:28
【问题描述】:

我尝试从 terraform 的 v0.11 迁移到 v0.12,但条件标签遇到了一些问题。

这是我的资源:

resource "aws_lb_listener_rule" "static" {
  listener_arn = var.alb_int_arn
  priority     = index(var.priority_load, count.index)

  action {
    type             = "forward"
    target_group_arn = aws_alb_target_group.alb_target_group.arn
  }

  count = var.count_path

  condition {
    host_header {
      values = index(var.path_to_service, count.index)
    }
  }
}

var.path_to_service 这是一个字符串列表,var.priority_load 这是一个数字列表。

我的问题是当我尝试应用我的 terraform 文件时,总是说命令相同的错误:

属性“值”的值不合适:需要一组字符串。

我尝试直接放一个字符串,我有同样的错误。

我的 IDE (IntelliJ) 在检查代码时说我的条件标签有错误,错误说:

报告未知类型的块(第一个字面量)

我做了一个测试,我改变了一个块的条件标签,像这样:

condition = {
    host_header {
      values = index(var.path_to_service, count.index)
    }
  }

要对其进行 terraform,这是一个语法错误,但对于我的 IDE 来说,这是一个正确的配置……显然行不通

对我有什么想法吗?

【问题讨论】:

    标签: terraform


    【解决方案1】:

    此错误表示此 values 参数需要一组字符串,但显然 var.path_to_service 的元素不是该类型。

    您没有共享 variable "path_to_service" 的定义,但为了使其与所编写的配置一起工作,需要声明如下:

    variable "path_to_service" {
      type = list(set(string))
    }
    

    ...调用模块分配给它的值需要像这样嵌套:

      path_to_service = [
        ["a", "b"],
        ["c"],
      ]
    

    由于您的变量有一个单数名称,我想它更有可能是一个单独的字符串列表,每个“服务”一个:

    variable "path_to_service" {
      type = list(string)
    }
    
    path_to_service = [
      "a",
      "b",
      "c",
    ]
    

    如果这是真的,那么您需要将这些单独的字符串包装在一个元素集中,方法是将表达式包装在括号中 [ ]:

      values = [index(var.path_to_service, count.index)]
    

    尽管您正在为 Terraform 0.12 更新此内容,但您也可以切换到新的列表索引语法,这应该会获得相同的结果:

      values = [var.path_to_service[count.index]]
    

    将这些列表括号与我上面给出的示例变量值添加将导致 Terraform 理解这一点,就好像您编写了以下内容一样,使用“a”作为示例:

      condition {
        host_header {
          values = ["a"]
        }
      }
    

    ...这似乎与 values 参数所期望的类型相匹配。

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 2020-08-20
      • 2021-12-27
      • 2017-12-23
      • 2018-01-21
      • 2020-07-16
      • 2018-01-15
      • 2021-09-20
      • 2017-06-11
      相关资源
      最近更新 更多