【问题标题】:Terraform Inappropriate value for attribute "subnets": element 0: string requiredTerraform 属性“子网”的值不合适:元素 0:需要字符串
【发布时间】:2020-10-28 19:02:39
【问题描述】:

我正在从 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.

这个错误的代码sn-p是:

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}"
}

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    subnets = ["${var.alb_subnets}"] 更改为 subnets = var.alb_subnets

    它是 terraform v0.12 的更新

    参考:https://www.terraform.io/upgrade-guides/0-12.html#referring-to-list-variables

    【讨论】:

      【解决方案2】:

      错误消息表明aws_alb 资源的参数subnets 在其list 类型中需要string 类型的元素。该错误表明您为参数提供的值不是list(string) 类型。尽管问题中没有提供变量 alb_subnets 的值或类型,但可以假设它是 listmap,因为变量的名称是复数形式。假设它是 list,当您在配置中将其指定为 list(list(any)) 时,您将其转换为:

      ["${var.alb_subnets}"]
      

      解构这个,[] 指定了一个list,而变量已经是一个list。问题中未提供变量的元素,但可以假定它们为any,而不会牺牲准确性。

      您可以删除外括号并:

      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}"
      }
      

      将是参数值的list(any)。如果您的 alb_subnets 元素不是字符串,那么您还必须修复它以确保参数的 list(string) 类型正确。

      【讨论】:

        猜你喜欢
        • 2020-04-09
        • 2021-07-17
        • 2021-06-23
        • 2021-03-26
        • 2021-11-27
        • 2021-02-09
        • 2021-06-18
        • 2020-08-09
        • 1970-01-01
        相关资源
        最近更新 更多