有一个定义子网的代码,如下所示:
resource "aws_subnet" "public" {
count = length(data.aws_availability_zones.available.names)
vpc_id = aws_vpc.main_vpc.id
cidr_block = cidrsubnet(var.vpc_cidr, 8, count.index)
availability_zone = element(data.aws_availability_zones.available.names, count.index)
map_public_ip_on_launch = true
tags = {
Name = "${var.environment}-public-${element(data.aws_availability_zones.available.names, count.index)}"
}
}
稍后有一个定义自动缩放组的代码:
resource "aws_autoscaling_group" "ec2_testing" {
availability_zones = [data.aws_availability_zones.available.names[0]]
vpc_zone_identifier = [element(aws_subnet.public.*id, count.index),]
desired_capacity = 1
max_size = 1
min_size = 1
launch_template {
id = aws_launch_template.ec2_testing.id
version = "$Latest"
}
}
我收到错误:
需要逗号将每个函数参数与下一个函数参数分开。
编辑:只需要分配一个子网。
vpc_zone_identifier
应该如何纠正?请帮忙。
就像ydaetskcoR提到的,应该采取两种行动:
aws_subnet.public.*id
应该是aws_subnet.public.*.id
.还有你 availability_zones如果您 还指定vpc_zone_identifier,因为它是不必要的,并且会 使逻辑复杂化(您当前的示例将失败,因为这些子网 并非都在同一个可用区(你要么需要依靠那aws_autoscaling_group才能 使用count.index,或者你只需要使用
aws_subnet.public.*.id[0]
类似于您在 上述参数。
添加此内容以提高可见性。