如何创建到 ALB 的 Route 53 记录? (AWS)

Posted

技术标签:

【中文标题】如何创建到 ALB 的 Route 53 记录? (AWS)【英文标题】:How can I create a Route 53 Record to an ALB? (AWS) 【发布时间】:2018-08-01 19:48:45 【问题描述】:

我想创建一个新的 alb 和一个指向它的 route53 记录。

我知道我有 DNS 名称:$aws_lb.MYALB.dns_name

是否可以使用 aws_route53_record 资源为公共 DNS 名称创建一个 cname?

【问题讨论】:

【参考方案1】:

见Terraform Route53 Record docs

您可以使用以下内容添加基本 CNAME 条目:

resource "aws_route53_record" "cname_route53_record" 
  zone_id = aws_route53_zone.primary.zone_id # Replace with your zone ID
  name    = "www.example.com" # Replace with your subdomain, Note: not valid with "apex" domains, e.g. example.com
  type    = "CNAME"
  ttl     = "60"
  records = [aws_lb.MYALB.dns_name]

或者,如果您使用的是“***”域(例如 example.com),请考虑使用别名 (AWS Alias Docs):

resource "aws_route53_record" "alias_route53_record" 
  zone_id = aws_route53_zone.primary.zone_id # Replace with your zone ID
  name    = "example.com" # Replace with your name/domain/subdomain
  type    = "A"

  alias 
    name                   = aws_lb.MYALB.dns_name
    zone_id                = aws_lb.MYALB.zone_id
    evaluate_target_health = true
  

【讨论】:

值得指出的是,无论如何,ALIAS A 记录比 CNAME 更好,因为它节省了一次 DNS 查找并且也是免费的。 很好的解释,谢谢。你的 Apex 场景是我的赢家。【参考方案2】:

是的,如果您使用 domain with a subdomain 而不是 apex domain(naked domain, root domain),则可以使用 aws_route53_record 资源为公共 DNS 名称 $aws_lb.MYALB.dns_nameaws_lb.MYALB.dns_name 创建 CNAME

所以Terraform(v0.15.0) 中的以下代码适用于CNAMEdomain which has a subdomain。 *CNAMEapex domain(naked domain, root domain) 会导致错误。

resource "aws_route53_zone" "myZone" 
  name = "example.com"


resource "aws_route53_record" "myRecord" 
  zone_id = aws_route53_zone.myZone.zone_id
  name    = "www.example.com"
  type    = "CNAME"
  ttl     = 60
  records = [aws_lb.MYALB.dns_name]

此外,Terraform(v0.15.0) 中的以下代码适用于 AAAAAapex domain(naked domain, root domain),甚至适用于 domain with a subdomain

resource "aws_route53_zone" "myZone" 
  name = "example.com"


resource "aws_route53_record" "myRecord" 
  zone_id = aws_route53_zone.myZone.zone_id
  name    = "example.com" # OR "www.example.com"
  type    = "A" # OR "AAAA"

  alias 
      name                   = aws_lb.MYALB.dns_name
      zone_id                = aws_lb.MYALB.zone_id
      evaluate_target_health = true
  

【讨论】:

以上是关于如何创建到 ALB 的 Route 53 记录? (AWS)的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 在 route53 上获取托管域的 zone_id

为啥我使用 terraform 资源 aws_route53_record 创建的 Route53 记录无法公开解析?

AWS Route 53 别名记录导致 301

不同端口上的 Route 53 记录集

AWS Route53上的MXE记录

如何将 Amazon Route 53 与 Digital Ocean 水滴一起使用?