Terraform中使用CSV创建Route53记录时如何处理单元格换行?
解决Terraform通过CSV创建多值Route53 A记录的换行解析问题
问题分析
你当前的代码中,CSV里的"x.x.x.x \n x.x.x.x"会被csvdecode解析成单个带换行的字符串,而aws_route53_record的records参数需要的是字符串列表(每个元素对应一个IP),因此无法正确生成多值A记录。
解决方案
通过split函数将解析后的字符串按换行符拆分,再用trimspace清理每个IP前后的空格,得到符合要求的IP列表。
修改后的完整代码
locals { dns_data = <<-CSV RecordType,RecordName,RecordZone,RecordZoneId,RecordValue A,something.example.com,something,zoneid,"x.x.x.x \n x.x.x.x" CSV dns_records = csvdecode(local.dns_data) } resource "aws_route53_record" "route53_entry" { for_each = { for record in local.dns_records : record.RecordName => record } name = each.value.RecordName type = each.value.RecordType zone_id = each.value.RecordZoneId ttl = 60 # 拆分换行字符串并清理空格,得到IP列表 records = [for ip in split("\n", each.value.RecordValue) : trimspace(ip)] }
关键说明
split("\n", each.value.RecordValue):将包含换行的字符串拆分成子字符串列表,每个子字符串对应一个带空格的IPtrimspace(ip):移除每个IP前后的空格,确保最终的IP格式干净- 如果CSV里用其他分隔符(比如分号
x.x.x.x;x.x.x.x),可以把split("\n", ...)改成split(";", ...),更直观且避免换行带来的格式问题
内容的提问来源于stack exchange,提问作者linus999
相关产品推荐
相关产品推荐

