Amazon web services Terraform提取子网列表会导致错误-是包含1个元素的元组

Amazon web services Terraform提取子网列表会导致错误-是包含1个元素的元组,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,我有一个模块,可以创建一个包含公共和私有子网的VPC module "vpc" { count = var.vpc_enabled ? 1 : 0 source = "./vpc" } output "private_subnets" { value = aws_subnet.private.*.id } 作为该模块的输出,我提取私有子网 module "vpc

我有一个模块,可以创建一个包含公共和私有子网的VPC

module "vpc" {
  count              = var.vpc_enabled ? 1 : 0
  source             = "./vpc"
}
output "private_subnets" {
  value = aws_subnet.private.*.id
}
作为该模块的输出,我提取私有子网

module "vpc" {
  count              = var.vpc_enabled ? 1 : 0
  source             = "./vpc"
}
output "private_subnets" {
  value = aws_subnet.private.*.id
}
然后我想使用该子网列表作为另一个模块的输入:

module "eks" {
  source          = "./eks"
  name            = var.name
  private_subnets = var.vpc_enabled ? module.vpc.private_subnets : var.private_subnets_id
}
基本上,我试图实现的是,用户可以选择是创建新的专有网络,还是使用现有专有网络的子网列表作为输入

我现在遇到的问题是,我在terraform plan中遇到了以下错误:

  on main.tf line 32, in module "eks":
  32:   private_subnets = var.vpc_enabled ? module.vpc.private_subnets : var.private_subnets_id
    |----------------
    | module.vpc is tuple with 1 element

This value does not have any attributes.

有人知道如何解决这个问题吗?

您正在用
计数
定义
专有网络
模块。因此,您需要引用模块的单个实例,即使只有1个

private_subnets = var.vpc_enabled ? module.vpc[0].private_subnets : var.private_subnets_id