将多个安全组映射到 ELB

Mapping multiple Security Groups into ELB

我正在尝试将包含 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 没有意义,因为我不想创建多个资源,我只想确保创建的所有安全组都附加到负载均衡器。有什么想法吗?

由于您已经使用了 for_each,因此 aws_security_group.sg 的实例将不止一个。要从所有这些中获取 id,您可以使用 splat 运算符:

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