错误:模块参数的值无效给定的值不适合子模块变量
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_ids
是az
的映射: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 注释