我正在使用terraform中的count创建多个资源。例如:
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"它需要vpc_zone_identifier的列表,即我创建的子网ID
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"
}
}
但如果我在创建资源(aws_autoscaling_group(时使用count,它将创建多个资源,即每个子网3个不同的自动缩放组,但这里我只想要我之前创建的所有子网ID。如何在不创建多个资源的情况下实现这一点?
您可以使用splat运算符:aws_subnet.rSubnetMGMT.*.id
,它将解析为已创建子网的ID列表。