Как получить несколько значений в списке без использования count в terraform?

#amazon-web-services #terraform #terraform-provider-aws

#amazon-web-services #terraform #terraform-provider-aws

Вопрос:

Я создаю несколько ресурсов, используя count в terraform. например:

 resource "aws_subnet" "rSubnetMGMT" {
  count = length(var.vletter)
  availability_zone = "${var.vRegion}${var.vletter[count.index]}"
  vpc_id     = aws_vpc.rVPCMGMT.id
  cidr_block = var.vSubnetMGMTCIDR
  map_public_ip_on_launch = "true"

  tags = {
    Name = "${var.vWorkloadShortCode}-mgmt-MGMT- ${var.vRegion}${var.vletter[count.index]}"
    SubnetType = "MGMT"

  }
}
  

здесь vletter = [«a», «b»,»c»]
таким образом, это создает 3 подсети на зону доступности
, теперь я хочу создать «aws_autoscaling_group», для которого требуется список идентификаторов подсети, которые я создал

 resource "aws_autoscaling_group" "rAutoScalingGroup" {
  count = lenght(var.vletter)
  max_size                  = var.vMaxNoofInstances
  min_size                  = var.vMinNoofInstances
  launch_configuration      = aws_launch_configuration.rLaunchConfiguration.name
  vpc_zone_identifier       = [aws_subnet.rSubnetMGMT[count.index].id ]
  metrics_granularity       = 1Minute
  enabled_metrics           = [GroupInServiceInstances]
  load_balancers = aws_elb.rLoadBalancer.name

  tag {
    Name                 = "${var.vInstanceShortNameBAS}-asg"
  }
}
  

но если я использую count при создании ресурса (aws_autoscaling_group), он создаст несколько ресурсов, т.Е. 3 Разные группы автоматического масштабирования для каждой подсети, но здесь мне нужны только все идентификаторы подсети, которые я создал ранее. Как я могу добиться этого, не создавая несколько ресурсов?

Ответ №1:

Вы можете использовать оператор splat: aws_subnet.rSubnetMGMT.*.id который будет преобразован в список идентификаторов созданных подсетей.