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

问题描述

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

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

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

也许我需要创建一个单独的项目来管理云端方面和另一个项目来管理其他资源?目前我正在一个项目中完成所有工作。

标签: amazon-web-servicesterraformamazon-cloudfrontamazon-route53

解决方案


您可以为不同的环境使用单独的状态文件,这将是最好的解决方案。这样,您可以在每个环境中拥有单独的 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) 不冲突,您就可以同时部署多个状态。


推荐阅读