amazon-web-services - 如何在 Route53 中为单个域的每个环境(阶段、产品)创建不同的 DNS 记录?
问题描述
所以我有一个域: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) 不冲突,您就可以同时部署多个状态。
推荐阅读
- python - 在python中操作嵌套字典
- java - Android Studio“无法解析符号“xxx””
- iphone - 在 Web App 上使用 iPhone 相机的 QR 码扫描仪
- ruby-on-rails - Ruby on Rails 用户身份验证 CRUD API 构建
- python - 防止 Python 中的内存泄漏;循环引用
- laravel - 在 Laravel 7.x 中找不到类 'Illuminate\Support\Facades\Http'
- r - 嗨,我生成了一个带有几个椭圆的图,我想计算我的图上 40 个椭圆的面积(!)
- garbage-collection - CLR Profiler LOH 大小与按地址 LOH 大小的对象不匹配?
- flutter - 如何创建一个可调整大小的自定义扭曲形状四边形,它可以在颤动中裁剪 Doc 图像?
- java - 在发送 UDP netty 之前拆分消息