Terraform 如何将子网列表传递给';子网';属性

Terraform 如何将子网列表传递给';子网';属性,terraform,amazon-ecs,terraform-provider-aws,Terraform,Amazon Ecs,Terraform Provider Aws,我正在重写我的子网代码,使其更加灵活,并由参数驱动: resource "aws_subnet" "private" { count = "${var.az_count}" cidr_block = "${cidrsubnet(aws_vpc.ecs.cidr_block, 8, count.index)}" availability_zone = "${data.aws_availability_zones.available.names[co

我正在重写我的子网代码,使其更加灵活,并由参数驱动:

resource "aws_subnet" "private" {
  count             = "${var.az_count}"
  cidr_block        = "${cidrsubnet(aws_vpc.ecs.cidr_block, 8, count.index)}"
  availability_zone = "${data.aws_availability_zones.available.names[count.index]}"
  vpc_id            = "${aws_vpc.ecs.id}"
}
这是将子网传递给的旧代码

resource "aws_ecs_service" "service" {
    network_configuration {
        subnets = [ "${aws_subnet.subnet1.id}", "${aws_subnet.subnet2.id}" ]
        ...
}
如何将子网ID从
aws\u subnet.private
传递到
subnets
属性

我试过了

subnets = ${aws_subnet.priate[*].id}
但有一个错误:

 Expected the start of an expression, but found an invalid expression token

首先,您可以删除${},除非是在插值的情况下。敲打这些东西,你就会有更多的可读性:

resource "aws_subnet" "private" {
  count             = var.az_count
  cidr_block        = cidrsubnet(aws_vpc.ecs.cidr_block, 8, count.index)
  availability_zone = data.aws_availability_zones.available.names[count.index]
  vpc_id            = aws_vpc.ecs.id
}
splat的引用语法正确,拼写错误。试试这个:

subnets = aws_subnet.private[*].id

Splat ref:

首先,您可以删除${},除非是在插值的情况下。敲打这些东西,你就会有更多的可读性:

resource "aws_subnet" "private" {
  count             = var.az_count
  cidr_block        = cidrsubnet(aws_vpc.ecs.cidr_block, 8, count.index)
  availability_zone = data.aws_availability_zones.available.names[count.index]
  vpc_id            = aws_vpc.ecs.id
}
splat的引用语法正确,拼写错误。试试这个:

subnets = aws_subnet.private[*].id
Splat ref: