问题描述
.... \ euc-terraformcontrol-alb \ alb.tf第127行,在资源“ aws_alb_listener_rule”“ alb_listener_rule”中: 127:字段=“ $ {element(split(”,“,var.listener_rule_field),count.index)}”
此处不应使用名为“ field”的参数。
.... \ euc-terraformcontrol-alb \ alb.tf第128行,在资源“ aws_alb_listener_rule”“ alb_listener_rule”中: 128:值= [“ $ {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)}"
}
}
解决方法
这打破了new version
中的更改在旧版本中,我们能够使用以下代码进行条件路由
condition {
field = "host-header"
values = ["api.example.com"]
}
将您的Terraform配置切换为使用host_header
或path_pattern
配置块。
因此上述条件将变为
condition {
host_header {
values = ["api.example.com"]
}
}
如果您在某些CI / CD平台上运行代码,则最好在配置中添加一个版本,以避免将来出现此类问题并保持代码兼容。
provider "aws" {
version = "~> 2.31.0"
}
,版本
meta-argument
指定provider
的版本约束,并以与required_providers块中的version参数相同的方式工作。只有在required_providers不包含该提供程序的版本限制时,才使用提供程序配置中的版本约束。
在{2}中,field
和values
在AWS Provider 2.x版本中被弃用。在提供者版本3.x中,它们被删除并且不再有效,如here块的新文档中所示。
官方的《 Terraform AWS Provider版本3升级指南》中对此进行了进一步解释:
因此,您要么必须迁移代码以与aws provider 3.x一起使用,要么回到使用较旧的版本。