Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 地形,将少数子网传递给自动缩放组_Amazon Web Services_Terraform_Terraform Provider Aws - Fatal编程技术网

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