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

Terraform中如何将域名后缀拼接至主机名列表所有元素

解决Terraform中负载均衡监听器规则的域名拼接问题

你需要对domain_list里的每个元素逐个进行字符串拼接,直接用+、join或concat都做不到这点——这些函数无法实现列表元素与字符串的逐个配对拼接。正确的做法是用Terraform的for表达式遍历列表,生成拼接后的新列表。

另外注意你的route53_domain值末尾带了个.,直接拼接会导致结果多一个冗余的点(比如bi.dev.apple.com.),所以需要先用trim函数去掉末尾的.,再和列表元素拼接。

修改后的aws_lb_listener_rule完整配置如下:

resource "aws_lb_listener_rule" "lb_app" {
  listener_arn = data.aws_lb_listener.https.arn

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.lb_app.arn
  }

  condition {
    host_header {
      values = [for d in var.domain_list : "${d}.${trim(var.route53_domain, ".")}"]
    }
  }
}

关键逻辑说明:

  • [for d in var.domain_list : ...]:遍历domain_list的每个元素,将临时变量d赋值为当前元素
  • ${d}.${trim(var.route53_domain, ".")}:把当前元素d和去掉末尾点的route53_domain用.拼接,生成符合要求的完整域名
  • 最终values会输出你期望的结果:["bi.dev.apple.com", "test.dev.apple.com", "app.dev.apple.com"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:35:17