You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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):将包含换行的字符串拆分成子字符串列表,每个子字符串对应一个带空格的IP
  • trimspace(ip):移除每个IP前后的空格,确保最终的IP格式干净
  • 如果CSV里用其他分隔符(比如分号x.x.x.x;x.x.x.x),可以把split("\n", ...)改成split(";", ...),更直观且避免换行带来的格式问题

内容的提问来源于stack exchange,提问作者linus999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:50:39