【发布时间】:2022-07-28 20:48:59
【问题描述】:
概述
我想创建一个 Route53 DNS 记录。根据变量,它将是 CNAME 记录或 ALIAS 记录。
在第一次运行时,这可以正常工作,因为这两条记录都不存在。
但是,当更新变量var.route_53_redirection_type 以更改记录类型时,terraform apply 会失败,因为它会在删除旧记录之前尝试创建新记录。
Error: [ERR]: Error building changeset: InvalidChangeBatch: [RRSet of type A with DNS name redirect is not permitted because a conflicting RRSet of type CNAME with the same DNS name already exists in zone.]
当terraform apply 再次运行时,它可以工作,因为该记录已在前一次运行中被删除。
这是代码:
resource \"aws_route53_record\" \"alias\" {
count = var.route_53_redirection_type == \"ALIAS\" ? 1 : 0
zone_id = data.aws_route53_zone.public.zone_id
name = \"redirect\"
type = \"A\"
alias {
name = module.alb.alb_dns_name
zone_id = module.alb.alb_zone_id
evaluate_target_health = true
}
}
resource \"aws_route53_record\" \"cname\" {
count = var.route_53_redirection_type == \"CNAME\" ? 1 : 0
zone_id = data.aws_route53_zone.public.zone_id
name = \"redirect\"
type = \"CNAME\"
ttl = \"5\"
records = [\"www.google.com\"]
}
问题
- 是否可以确保删除发生在创建之前?
- 是否有更好的方法完全消除依赖关系?
笔记我看过lifecycle 和depends_on 但在这种情况下这些似乎都不适用。
提前致谢!
-
为什么要更改记录类型?用例是什么?
-
谢谢。它不会经常改变。短期CNAME,长期ALIAS。 @simmyk 的答案可能会奏效。这似乎是一个我认为 Terraform 能够处理的简单用例。
-
但否则否:您不能指定删除顺序。
标签: amazon-web-services terraform terraform-provider-aws