#amazon-web-services #terraform #amazon-cloudfront #amazon-route53
#amazon-web-services #terraform #amazon-cloudfront #amazon-route53
Вопрос:
Итак, у меня есть один домен: example.com и я хочу настроить сценическую и продюсерскую среду. Мне трудно понять, как использовать разные записи DNS для одного дистрибутива cloudfront, например: prod1.example.com и stag1.example.com
Я собирался попытаться использовать отдельные файлы состояния для управления каждой средой, однако это приведет к повторному созданию дистрибутива cloudfront и, вероятно, завершится неудачей, поскольку в домене, который я пытаюсь использовать, уже существует дистрибутив.
Если я использую один и тот же файл состояния, мне нужно будет создать два дистрибутива, указывающих на отдельные сегменты, но это, похоже, создает проблемы, поскольку у меня есть переменные, зависящие от среды, и это просто не имеет никакого смысла.
Возможно, мне нужно создать отдельный проект только для управления аспектом cloudfront и другой проект для управления другими ресурсами? В настоящее время я делаю все это в одном проекте.
Комментарии:
1. Что это за «файл состояния», на который вы ссылаетесь?
2. файл состояния terraform
3. «однако это приведет к повторному созданию дистрибутива cloudfront и, вероятно, завершится неудачей, поскольку в домене, который я пытаюсь использовать, уже существует дистрибутив». зачем это делать? Вы сказали, что хотите использовать
prod1.example.com
иstag1.example.com
какие разные доменные имена. Похоже, вас смущает тот факт, что они используют одну и ту же зону Route53 или родительский домен, но здесь это не проблема.4. Кажется, в вашем первом абзаце говорится, что вы хотите иметь единый дистрибутив cloudfront, но в третьем абзаце предполагается, что вам нужны отдельные дистрибутивы независимо от чего-либо еще (поскольку один дистрибутив, по-видимому, не представляет проблемы для одного файла состояния).). Пожалуйста, уточните, что правильно, и отредактируйте вопрос.
Ответ №1:
Вы можете использовать отдельные файлы состояния для разных сред, и это было бы лучшим решением. Таким образом, вы можете иметь отдельный дистрибутив CloudFront для каждой среды, а все остальное также разделено.
Существует источник данных для зоны route 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) не конфликтуют, вы можете одновременно развертывать несколько состояний.