Terraform跨项目复用aws_route53_zone时触发托管区销毁问题排查
问题场景
- 独立项目通过Terraform创建了AWS Route53公共托管区,托管区生命周期完全由原项目管理
- 新项目使用独立的Terraform状态后端,需要复用上述已存在的托管区,在其下新增解析记录
新项目中编写的配置代码如下:
data "aws_route53_zone" "selected" { name = "somealreadyexistingzone.com" private_zone = false } resource "aws_route53_record" "record1" { zone_id = data.aws_route53_zone.selected.zone_id name = "anewsubdomain" type = "A" ttl = "300" records = ["8.8.8.8"] }
执行terraform plan时出现异常:计划输出显示会正确创建关联对应zone_id的A记录,其余配置逻辑均符合预期,但同时提示将销毁已存在的Route53托管区,报错原因为:aws_route53_zone.domain 不在当前配置中。
问题结论
该异常不是配置写法错误导致的。上述通过data数据源读取外部托管区、再绑定zone_id创建解析记录的写法,完全符合Terraform跨项目引用非本状态管理资源的规范。
根因验证
结合排查信息可确认该问题为特定版本组合下的兼容bug:
- 该异常最初仅在Terraform v1.2.2版本中偶发,同配置在Terraform v1.2.0、v1.2.1版本中均无法复现
- 后续在相同Terraform v1.2.2版本环境中重新测试已无法复现该问题;前期触发异常时未记录使用的AWS Provider版本,当前验证无异常的环境使用的AWS Provider版本为
registry.terraform.io/hashicorp/aws v4.17.1,可判定是特定Terraform核心版本与AWS Provider版本组合下的临时兼容问题,和配置本身逻辑无关。
内容的提问来源于stack exchange,提问作者user3767974
相关产品推荐
相关产品推荐

