【问题标题】:how to pass list input to aws vpc elb in terraform如何在terraform中将列表输入传递给aws vpc elb
【发布时间】:2020-05-03 14:45:17
【问题描述】:

我正在尝试在我有 2 个公共子网的 VPC 中配置 aws 经典 ELB。这些子网也由 terraform 提供,我正在尝试将两个子网 id 都传递给 elb 模块。所以问题是我无法将列表输入提供给 elb 子网字段

public_subnet 变量工作正常,因为我已将它用于路由表关联,只是我无法处理列表并将其作为 vpc 的输入。

如果我使用子网 = [var.public_subnet.0,var.public_subnet.1],它会起作用

这是我的代码

resource "aws_elb" "webelb" {
  name               = "foobar-terraform-elb"
  #availability_zones = [var.public_subnet]
  subnets = [var.public_subnet]
#
#
#
}

variable "public_subnet" {
  type = list
}

subnet.tf
output "public_subnet" {
  value = aws_subnet.public.*.id
}```

Error:
```Error: Incorrect attribute value type

  on elb/elb.tf line 4, in resource "aws_elb" "webelb":
   4:   availability_zones = [var.public_subnet]

Inappropriate value for attribute "availability_zones": element 0: string
required.```



【问题讨论】:

  • 如果你通过 subnets = var.public_subnet 是否有效。提供 terraform 版本很有帮助,因为语法发生了变化,同时显示子网的实际来源也很有用。 (ps 我建议将您的 var 更改为 public_subnets,复数,如果它包含一个数组)
  • 感谢@Datise 按预期工作
  • 如果你能接受,我会回答,那就太好了!

标签: terraform terraform-provider-aws


【解决方案1】:

因为var.public_subnet 已经是一个列表。 [var.public_subnet] 等效于 [["192.168.0.0/32"]] 而不是预期的非嵌套输入 ["102.168.0.0/32"]

即...只需使用var.public_subnet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多