【发布时间】:2020-08-27 17:20:24
【问题描述】:
有一个定义子网的代码如下:
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?请帮忙。
【问题讨论】:
-
aws_subnet.public.*id应该是aws_subnet.public.*.id。此外,如果您还指定了vpc_zone_identifier,则不应指定availability_zones参数,因为它是不必要的并且会使逻辑复杂化(您当前的示例将失败,因为这些子网并不都在同一个 AZ 中)。 -
您要么需要
count上的aws_autoscaling_group才能使用count.index,要么只需要使用aws_subnet.public.*.id[0],就像您使用列表中的第一个可用区一样上述参数中的区域。 -
ydaetskcoR - 提供了正确答案。
-
谢谢@ydaetskcoR
标签: amazon-web-services terraform terraform-provider-aws