Terraform配置AmazonMQ时条件表达式类型不一致报错如何解决
错误原因
Terraform的三元运算符condition ? val_true : val_false要求val_true和val_false必须为完全相同的类型,你当前的写法中:
- 条件为真时返回的是
module.vpc.private_subnet_ids[0],属于单个字符串类型 - 条件为假时返回的是
module.vpc.private_subnet_ids,属于子网ID的元组/列表类型
两种类型不匹配,所以触发类型不一致报错。
解决方法
将条件为真时的返回值也封装为单元素列表,保证两边返回值类型统一为列表即可,修改后的subnet_ids参数写法如下:
subnet_ids = var.cluster_deployment_mode[local.stage] != "ACTIVE_STANDBY_MULTI_AZ" ? [module.vpc.private_subnet_ids[0]] : module.vpc.private_subnet_ids
修改后两种场景返回值均为列表类型:
- 非多AZ部署时,传入仅包含第一个私有子网ID的单元素列表,符合单实例部署的参数要求
- 多AZ部署时,传入全部私有子网ID的列表,符合多AZ跨子网部署的要求
内容的提问来源于stack exchange,提问作者hock
相关产品推荐
相关产品推荐

