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

将多个安全组映射到ELB

  •  1
  • Hysii  · 技术社区  · 3 年前

    我正在尝试将包含Cloudfront CIDR的多个安全组连接到我的AWS ALB。

    locals {
      chunks = chunklist(data.aws_ip_ranges.cloudfront.cidr_blocks, 60)
      chunks_map = { for i in range(length(local.chunks)): i => local.chunks[i] }
    }
    
    resource "aws_security_group" "sg" {
      for_each = local.chunks_map
      name = "{each.key}"
    
      egress {
        ....
      }
    }
    
    resource "aws_elb" "load" {
      name = "test"
      security_groups = aws_security_group.sg.id // This is wrong
    

    我收到的错误是 Because aws_security_group.sg has for_each se, its attributes must be access on specific instances

    再次使用for_each没有意义,因为我不想创建多个资源,我只想确保创建的所有安全组都连接到负载平衡器。有什么想法吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   Marcin    3 年前

    自从你用过 for_each 将会有不止一个这样的例子 aws_security_group.sg .得到 id 从所有这些你都可以使用 splat 接线员:

    security_groups = values(aws_security_group.sg)[*].id