如何在 terraform 中从该结构中提取数据?

问题描述 投票:0回答:1

我在地形输出中有这个结构:

"eks_private_subnets_in_zones": {
  "value": {
    "us-east-1a": [
      "subnet-11111111111111111",
      "subnet-22222222222222222"
    ],
    "us-east-1b": [
      "subnet-33333333333333333",
      "subnet-44444444444444444"
    ],
    "us-east-1c": [
      "subnet-55555555555555555",
      "subnet-66666666666666666"
    ]
  },

如何生成子网列表,这些子网是每个可用区的子网之一(例如第一个子网)?明确地说,我想要:

["subnet-111111111111111111", "subnet-33333333333333333", "subnet-55555555555555555"]

我试过了

{for az in eks_private_subnets_in_zones: subnet.id => az[0]}

但我完全迷失在这里

terraform terraform-provider-aws
1个回答
0
投票

根据您的结构,您可以使用

values()
函数迭代地图 eks_private_subnets_in_zones.value,并为每个 AZ 选择列表的第一个元素。

您可以这样做:

output "first_eks_private_subnet_in_each_zone" {
  value = [for az_subnets in values(eks_private_subnets_in_zones.value) : az_subnets[0]]
}

基本上,

values(eks_private_subnets_in_zones.value)
获取列表列表(每个可用区中的子网),
[for az_subnets in values(...) : az_subnets[0]]
迭代每个列表(代表可用区的子网)并选择第一个子网。

此 Terraform 输出应生成一个列表,其中包含每个可用区域(us-east-1a、us-east-1b、us-east-1c)的第一个子网 ID。

© www.soinside.com 2019 - 2024. All rights reserved.