【问题标题】:terraform aws_lb_listener_rule condition arguement not getting recognized in terraform 0.12.20terraform aws_lb_listener_rule 条件争论未在 terraform 0.12.20 中得到认可
【发布时间】:2020-12-18 14:34:27
【问题描述】:

在 aws_lb_listener_rule 中出现此错误

错误:不支持的参数

在 ....\euc-terraformcontrol-alb\alb.tf 第 127 行,在资源“aws_alb_listener_rule”“alb_listener_rule”中: 127:字段=“$ {元素(拆分(“,”,var.listener_rule_field),count.index)}“

此处不应使用名为“field”的参数。

错误:不支持的参数

在 ....\euc-terraformcontrol-alb\alb.tf 第 128 行,在资源“aws_alb_listener_rule”“alb_listener_rule”中: 128: values = ["${element(split(",", var.listener_rule_value), count.index)}"]

resource "aws_alb_listener_rule" "alb_listener_rule" {
  count              = "${length(compact(split(",", var.priority))) > 0 ? "${length(compact(split(",", var.priority)))}" : 0}"
  listener_arn       = "${var.listener_arn}"
  priority           = "${element(split(",", var.priority), count.index)}"
  action              {
    type             = "forward"
    target_group_arn = "${element(split(",", var.target_group_arn), count.index)}"
  }
  condition           {
    //field            = "${element(split(",", var.listener_rule_field), count.index)}"
    //values           = "${element(split(",", var.listener_rule_value), count.index)}"
  }
}

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws terraform0.12+


    【解决方案1】:

    这是new version 中的重大更改

    在旧版本中,我们可以使用以下代码进行条件路由

     condition {
       field = "host-header"
       values = ["api.example.com"]
     }
    

    将您的 Terraform 配置切换为使用 host_headerpath_pattern 配置块

    所以上面的条件会变成

       condition {
        host_header {
          values = ["api.example.com"]
        }
      }
    

    如果您在某些 CI/CD 平台上运行代码,那么最好在配置中添加一个版本以避免将来出现此类问题并保持代码兼容。

    provider "aws" {
      version = "~> 2.31.0"
    }
    

    版本meta-argumentprovider 指定版本约束,其工作方式与 required_providers 块中的版本参数相同。仅当 required_providers 不包含该提供者的版本约束时,才会使用提供者配置中的版本约束。

    /provider-veriosing

    【讨论】:

      【解决方案2】:

      fieldvalues 在 aws 提供程序版本 2.x 中被弃用,如 here 所示。在提供程序版本 3.x 中,它们被删除并且不再有效,如 condition 块的新文档中所示。

      这在官方的“Terraform AWS Provider Version 3 Upgrade Guide”中有进一步的解释:

      因此,您要么必须迁移代码以使用 aws provider 3.x,要么返回使用旧版本。

      【讨论】:

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