Terraform生成重复Route53 DNS验证记录问题求助
问题根因
你为ACM证书同时配置了根域名、www域名两个备用名称(SAN),AWS ACM针对同属一个Route53托管区的两个域名,返回了完全相同的CNAME验证记录,因此aws_acm_certificate.ssl_certificate.domain_validation_options列表中存在两条重复条目,直接用length计算count就会尝试创建两条完全相同的Route53记录,触发AWS接口的冲突报错。
修复方案
推荐使用for_each替代count实现验证记录天然去重,同时避免后续域名变更导致的资源意外重建,修改后代码如下:
- 先定义本地值对验证记录做去重:
locals { // 以验证记录名为key构建map,天然过滤重复的验证记录 cert_validation_entries = { for opt in aws_acm_certificate.ssl_certificate.domain_validation_options : opt.resource_record_name => opt } }
- 修改cert-validations资源配置:
resource "aws_route53_record" "cert-validations" { for_each = local.cert_validation_entries zone_id = aws_route53_zone.main.zone_id name = each.value.resource_record_name type = each.value.resource_record_type records = [each.value.resource_record_value] ttl = 60 }
该方案会自动过滤重复的验证记录,无需手动硬编码count值,适配后续新增域名的场景。
内容的提问来源于stack exchange,提问作者gingerbreadboy
相关产品推荐
相关产品推荐

