Terraform 地形aws_lb_侦听器_规则条件
我尝试从terraform的v0.11迁移到v0.12,但在条件标签上遇到了一些问题 这是我的资源:Terraform 地形aws_lb_侦听器_规则条件,terraform,Terraform,我尝试从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 =
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告诉我,当它检查代码时,条件标记中有一个错误,错误是:
具有未知typefirst文本的报表块
我做了一个测试,并更改了块的条件标记,如下所示:
condition = {
host_header {
values = index(var.path_to_service, count.index)
}
}
variable "path_to_service" {
type = list(set(string))
}
path_to_service = [
["a", "b"],
["c"],
]
这是一个语法错误,但对于我的IDE来说,这是一个正确的配置。。。显然不行
对我有什么想法吗 此错误表示此values参数需要一组字符串,但显然var.path_to_服务的元素不是该类型 您没有共享变量path_to_服务的定义,但为了使其能够按照编写的方式使用此配置,需要声明如下内容:
condition = {
host_header {
values = index(var.path_to_service, count.index)
}
}
variable "path_to_service" {
type = list(set(string))
}
path_to_service = [
["a", "b"],
["c"],
]
…调用模块分配给它的值需要如下嵌套:
condition = {
host_header {
values = index(var.path_to_service, count.index)
}
}
variable "path_to_service" {
type = list(set(string))
}
path_to_service = [
["a", "b"],
["c"],
]
由于变量的名称是单数的,我想它更可能是一个单独字符串的列表,每个服务一个:
variable "path_to_service" {
type = list(string)
}
如果这是真的,那么您需要通过将表达式包装在括号[]中,将这些单独的字符串包装在一个元素集中:
在为Terraform 0.12更新此语法的同时,您还可以切换到新的列表索引语法,这将获得相同的结果:
values = [var.path_to_service[count.index]]
用我上面给出的示例变量值添加这些列表括号将使Terraform理解这一点,就好像您已经编写了以下内容一样,使用a作为示例:
condition {
host_header {
values = ["a"]
}
}
…似乎与该values参数所需的类型匹配。此错误表示该values参数所需的是一组字符串,但显然var.path_to_服务的元素不是该类型 您没有共享变量path_to_服务的定义,但为了使其能够按照编写的方式使用此配置,需要声明如下内容:
condition = {
host_header {
values = index(var.path_to_service, count.index)
}
}
variable "path_to_service" {
type = list(set(string))
}
path_to_service = [
["a", "b"],
["c"],
]
…调用模块分配给它的值需要如下嵌套:
condition = {
host_header {
values = index(var.path_to_service, count.index)
}
}
variable "path_to_service" {
type = list(set(string))
}
path_to_service = [
["a", "b"],
["c"],
]
由于变量的名称是单数的,我想它更可能是一个单独字符串的列表,每个服务一个:
variable "path_to_service" {
type = list(string)
}
如果这是真的,那么您需要通过将表达式包装在括号[]中,将这些单独的字符串包装在一个元素集中:
在为Terraform 0.12更新此语法的同时,您还可以切换到新的列表索引语法,这将获得相同的结果:
values = [var.path_to_service[count.index]]
用我上面给出的示例变量值添加这些列表括号将使Terraform理解这一点,就好像您已经编写了以下内容一样,使用a作为示例:
condition {
host_header {
values = ["a"]
}
}
…它似乎与该values参数所期望的类型匹配