代码之家  ›  专栏  ›  技术社区  ›  red888

如何访问地图列表中的值?

  •  0
  • red888  · 技术社区  · 5 年前

    价值 google_compute_subnetwork.subnetwork.secondary_ip_range 看起来像这样:

    [
        {
            ip_cidr_range = 10.1.0.0/16,
            range_name = my-range
        }
    ]
    

    我想不出如何循环,这不起作用:

    resource "aws_security_group_rule" "sdfsdfsdf" {
     count = "${length(data.google_compute_subnetwork.mysubnetwork.secondary_ip_range)}"
     type      = "ingress"
     from_port    = 0
     to_port     = 0
     protocol    = "-1"
      cidr_blocks = ["${data.google_compute_subnetwork.mysubnetwork.secondary_ip_range[count.index]}.ip_cidr_range}"]
    }
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Bill    5 年前

    使用 count.index 在本文件中:

    https://www.terraform.io/docs/configuration-0-11/interpolation.html#element-list-index-

    element(aws_subnet.foo.*.id, count.index)
    

    所以你的代码可以改成

    resource "aws_security_group_rule" "sdfsdfsdf" {
     count = "${length(data.google_compute_subnetwork.mysubnetwork.secondary_ip_range)}"
     type      = "ingress"
     from_port    = 0
     to_port     = 0
     protocol    = "-1"
      cidr_blocks = ["${element(data.google_compute_subnetwork.mysubnetwork.secondary_ip_range.*.ip_cidr_range, count.index)}"]
    }