Amazon web services 地形,将少数子网传递给自动缩放组
具有定义子网的代码,如下所示:Amazon web services 地形,将少数子网传递给自动缩放组,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,具有定义子网的代码,如下所示: 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)
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\u区域\u标识符?请帮助。如ydaetskcoR所述,应采取两种措施:
aws\u subnet.public.*.id
应该是aws\u subnet.public.*.id
。还有你
如果是,则不应指定availability_zones参数
还指定vpc_zone_标识符,因为这是不必要的,而且会
复杂的逻辑(您当前的示例将失败,因为这些子网
不都在同一个地方吗
你需要依靠aws_自动校准组才能
使用count.index,或者只需使用aws\u subnet.public.*.id[0]
类似于在中使用分区列表中的第一个AZ
上面的参数
添加此项以提高可见性。
aws\u subnet.public.*.id
应为aws\u subnet.public.*.id
。此外,如果同时指定vpc\u zone\u标识符,则不应指定availability\u zones
参数,因为这是不必要的,并且会使逻辑复杂化(当前示例将失败,因为这些子网不在同一个AZ中)。您需要对该aws_autoscaling_组进行count
,才能使用count.index
,或者只需使用aws_subnet.public.*.id[0]
,与使用上述参数中区域列表中的第一个AZ类似。ydaetskcoR-提供了正确答案。谢谢@ydaetskcoR