错误:模块参数的值无效给定的值不适合子模块变量

Posted

技术标签:

【中文标题】错误:模块参数的值无效给定的值不适合子模块变量【英文标题】:Error: Invalid value for module argument The given value is not suitable for child module variable 【发布时间】:2021-02-19 04:30:57 【问题描述】:

我收到以下错误:

The given value is not suitable for child module variable "subnets" defined at modules/efs/variables.tf:28,1-19: list of string required.

这就是我调用 EFS 模块的方式:

module "efs_media" 
  source          = "./modules/efs"
  namespace       = "eg"
  stage           = "test"
  name            = var.efs_names[1]
  region          = var.region
  vpc_id          = module.vpc.config.vpc_id
  subnets         = module.vpc.config.private_subnet_ids
  security_groups = [module.cluster.config.node_security_group]

以下是 VPC 输出文件:

output "config" 
  value = 
    vpc_id             = aws_vpc.network.id
    public_subnet_ids  =  for az, subnet in aws_subnet.public : az => subnet.id 
    private_subnet_ids =  for az, subnet in aws_subnet.private : az => subnet.id 
  

这是主要的输出文件:

output "vpc_config" 
  value = module.vpc.config


output "iam_config" 
  value = module.iam.config


output "cluster_config" 
  value = module.cluster.config


output "odic_config" 
  value = module.cluster.odic_config

【问题讨论】:

【参考方案1】:

在您的模块输出中private_subnet_idsaz 的映射:subnet.id。您的 efs_media 模块只需要一个子网 ID 列表,它要求提供一个字符串列表,如问题中的错误消息所示。

您可以使用values function 将地图转换为其值列表。因此,在您的情况下,您可以像这样调用 efs_media 模块:

module "efs_media" 
  source          = "./modules/efs"
  namespace       = "eg"
  stage           = "test"
  name            = var.efs_names[1]
  region          = var.region
  vpc_id          = module.vpc.config.vpc_id
  subnets         = values(module.vpc.config.private_subnet_ids)
  security_groups = [module.cluster.config.node_security_group]

【讨论】:

以上是关于错误:模块参数的值无效给定的值不适合子模块变量的主要内容,如果未能解决你的问题,请参考以下文章

查询参数的值表达式包含错误;从类型 Object() 到类型“String”的转换无效

模块错误(发出的值而不是错误的实例)

sitemap生成出现错误链接“指定的值含有无效的控制字符。参数名:value”

错误:模块“DynamicTestModule”导入了意外的值“CookieService”。请添加@NgModule 注释

为啥模块的导入导出会给出错误,因为声明了“BlogpostModule”但它的值从不读取.ts(6133)“角度7

在 Apple Swift 中将字符串转换为浮点数产生的值与模块错误不同