amazon-web-services - 错误:模块参数的值无效给定的值不适合子模块变量
问题描述
我收到以下错误:
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
}
解决方案
在您的模块输出private_subnet_ids
中是 : 的az
映射subnet.id
。您的efs_media
模块只需要一个子网 ID 列表,它要求一个字符串列表,如问题中的错误消息所示。
values
您可以使用函数将地图转换为其值的列表。所以在你的情况下,你可以这样调用你的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]
}
推荐阅读
- node.js - 如何检查Mongo Db中是否存在数据
- webpack - Webpack HMR module.accept 变量而不是字符串
- php - 如何在 laravel 中使 withCount 有条件
- c# - 更新视图模型后跟 BeginInvoke() 不会更新 UI
- docker - Docker | awslogs driver | Setting meaning stream name
- heroku - 在 heroku 上部署 golang 应用程序,无法导入依赖项
- java - 如何获取列表格式的 JSON 响应
- java - org.json.JSONObject 类型的数据无法转换为 JSONArray
- tensorflow - TensorflowHub 预训练的 MobileNetV2 改变输入形状和迁移学习
- typescript - 如何用预定义的值初始化字典?