我正在从 tf 11 升级到 tf 12。我遇到了terraform plan产生以下错误的问题:
Error: Incorrect attribute value type
4: subnets = ["${var.alb_subnets}"]
Inappropriate value for attribute "subnets": element 0: string required.
Run Code Online (Sandbox Code Playgroud)
该错误的代码片段是:
resource aws_alb "alb" {
name = "ecs-${var.app_name}"
internal = "${var.internal}"
subnets = ["${var.alb_subnets}"]
security_groups = ["${var.security_groups}"]
count = "${var.do_module}"
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我,我将不胜感激。
subnets该错误消息表明资源的参数需要其类型中aws_alb的元素。该错误表明您为参数提供的值不是 类型。尽管问题中未提供变量的值或类型,但可以假设它是 a或给定变量名称是复数。假设它是 a ,当您在配置中将其指定为 a 时,您将其转换为 a :stringlistlist(string)alb_subnetslistmaplistlist(list(any))
["${var.alb_subnets}"]
Run Code Online (Sandbox Code Playgroud)
解构它,[]指定 a list,并且变量已经是 a list。问题中未提供变量的元素,但可以假设它们是在any不牺牲准确性的情况下提供的。
您可以删除外括号并使用 ,而不是通过list将变量包装在另一个list语法中来指定嵌套:[]
resource aws_alb "alb" {
name = "ecs-${var.app_name}"
internal = "${var.internal}"
subnets = var.alb_subnets
security_groups = ["${var.security_groups}"]
count = "${var.do_module}"
}
Run Code Online (Sandbox Code Playgroud)
将是list(any)参数值的 a 。如果您的元素alb_subnets不是字符串,那么您还必须修复它以确保list(string)参数的正确类型。
改成 subnets = ["${var.alb_subnets}"] subnets = var.alb_subnets
它是 terraform v0.12 的更新
参考:https ://www.terraform.io/upgrade-guides/0-12.html#referring-to-list-variables
| 归档时间: |
|
| 查看次数: |
10562 次 |
| 最近记录: |