Terraform配置AWS CloudFront aliases参数传list变量报错解决
错误原因
核心问题是列表重复嵌套:
- 你在
variables.tf里定义的var.my_domains本身就是list(string)类型,自带两个字符串类型的域名元素,和aws_cloudfront_distribution资源的aliases参数要求的参数类型完全匹配。 - 配置里写的
aliases = [var.my_domains]属于多余嵌套:把已经是列表的变量整体当成单个元素,又在外层包了一层方括号,最终传入的是list(list(string))类型的双层嵌套结构。Terraform做参数校验时,在本该读取字符串值的位置拿到了一个列表对象,就会抛出你看到的“需要字符串类型”的报错。
修正方法
去掉赋值语句中外层多余的方括号,直接将列表变量赋值给aliases参数即可,修正后的distribution.tf对应配置段如下:
resource "aws_cloudfront_distribution" "my_domain_com" { # 其余原有配置保持不变 aliases = var.my_domains # 其余原有配置保持不变 }
修改完成后执行terraform plan即可通过类型校验,两个配置的域名会被正确识别为CloudFront分发的关联别名。
内容的提问来源于stack exchange,提问作者Mike D
相关产品推荐
相关产品推荐

