如何在 Route53 中为单个域的每个环境(阶段、产品)创建不同的 DNS 记录?

How to create different DNS records in Route53 for each environment(stage, prod) for a single domain?

所以我有一个域:example.com,我想设置一个舞台和生产环境。我无法理解如何为单个云端分发设置不同的 DNS 记录,例如:prod1.example.com 和 stag1.example.com

我打算尝试使用单独的状态文件来管理每个环境,但是这会导致重新创建云端分发并且可能会失败,因为我正在尝试的域已经存在分发使用。

如果我使用同一个状态文件,那么我需要创建两个分布,指向不同的存储桶,但这似乎会产生问题,因为我有环境特定变量,而且它似乎没有任何意义.

也许我需要创建一个单独的项目来管理云端方面,而另一个项目来管理其他资源?目前我正在一个项目中完成这一切。

您可以为不同的环境使用单独的状态文件,这将是最好的解决方案。通过这种方式,您可以为每个环境单独分配 CloudFront,其他所有内容也分开。

路线 53 区域 (https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/route53_zone) 有一个数据源:

data "aws_route53_zone" "zone" {
  name = "..."
}

然后您可以将 A 记录添加到 CloudFront 分配:

resource "aws_route53_record" "www" {
  zone_id = "${data.aws_route53_zone.zone.zone_id}"
  name    = "${var.prefix}.${data.aws_route53_zone.zone.name}"
  type    = "A"

  alias {
    name                   = "${aws_cloudfront_distribution.s3_distribution.domain_name}"
    zone_id                = "Z2FDTNDATAQYW2"
    evaluate_target_health = true
  }
}

这样只要前缀 (prod1, stage1) 不冲突就可以同时部署多个状态。