如何在Terraform中从文件为变量赋值字符串列表?
解决Terraform读取文件中字符串数组到WAF IP_Set的问题
你的问题核心在于file函数仅会将文件内容读取为字符串类型,而WAF IP_Set的addresses参数需要的是字符串集合(或列表),直接赋值会因为类型不匹配报错。
你可以通过jsondecode函数将文件中的JSON格式字符串解析为Terraform可识别的列表类型,具体修改如下:
1. 变量定义(可选,也可直接在资源中写文件路径)
variable "addresses_ipv4_file" { type = string default = "ip_adresses.txt" }
2. 资源配置中解析文件内容
resource "aws_wafv2_ip_set" "your_ip_set" { # 补充你的IP_Set其他必填参数,比如name、scope、description等 name = "example-ip-set" scope = "REGIONAL" description = "IP addresses from file" addresses = jsondecode(file(var.addresses_ipv4_file)) }
原理说明
file(var.addresses_ipv4_file):读取ip_adresses.txt中的JSON数组字符串jsondecode(...):将JSON格式的字符串转换为Terraform的列表类型,Terraform会自动将列表适配为addresses所需的字符串集合类型
注意事项
- 确保
ip_adresses.txt内的JSON格式完全合法:必须使用双引号包裹IP地址,数组格式正确,无多余语法错误(比如末尾不能多逗号) - 如果文件存在多余的换行或空格,可结合
trimspace函数清理后再解析,避免解析失败:addresses = jsondecode(trimspace(file(var.addresses_ipv4_file)))
内容的提问来源于stack exchange,提问作者Kikeman26
相关产品推荐
相关产品推荐

