在terraform 0.12.20中未识别terraform aws_lb_listener_rule条件参数



在aws_lb_listener_rule 中获取此错误

错误:不支持的参数

在。。。。\euc-地形控制alb\ab.tf行127,在资源"中;aws_alb_listener_rule"alb_listener_rule":127:字段="0"${element(split(",",var.listener_rule_field(,count.index(}">

一个名为";字段";此处不应出现。

错误:不支持的参数

在。。。。\euc-地形控制alb\ab.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)}"
}
}

这打破了新版本的变化

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

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不包括该提供程序的版本约束时使用。

/提供商验证

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

这在官方的";Terraform AWS提供商版本3升级指南";in:

  • condition.field和condition.values参数删除

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

最新更新