Terraform + Route53 - 管理现有记录

Raf*_*ues 2 amazon-web-services amazon-route53 terraform

我有一个生产环境,配置为具有指向负载均衡器的域名。这已经可以工作了,并且是使用 Route53 配置的。

我正在使用 Terraform 部署基础设施,包括 Route53 记录。

Route53 记录是手动设置的。

我希望 Terraform 在后续部署中管理 Route53 记录。但是,当我运行更新来更新基础设施并包含 Route53 记录时,出现以下错误:

Error: Error applying plan:

1 error(s) occurred:

 * module.asg.aws_route53_record.www: 1 error(s) occurred:

 * aws_route53_record.www: [ERR]: Error building changeset: 
    InvalidChangeBatch: [Tried to create a resource record set
    [name='foo.com.', type='A'] but it already exists]
Run Code Online (Sandbox Code Playgroud)

嗯,首先,这个错误是有道理的,因为资源已经存在。但是,鉴于此,如何在不导致停机的情况下解决这个问题呢?

我尝试手动编辑状态文件以包含route53记录,但失败并出现相同的错误...

如有必要,我很乐意提供更多信息。欢迎您提出任何建议。谢谢。

小智 6

您可以使用 terraform import 将现有 Route53 资源导入到当前的 terraform 基础设施中。步骤如下:

  1. 通过 terraform init 使用您想要的工作空间初始化 terraform。

  2. 定义与您拥有的现有资源完全相同的 aws_route53_record

    资源 "aws_route53_record" "www" { // 这里是您的代码 }

  3. 导入所需资源

terraform 导入 aws_route53_record.www ZONEID_RECORDNAME_TYPE_SET-IDENTIFIER

例如:

terraform 导入 aws_route53_record.www Z4KAPRWWNC7JR_dev.example.com_CNAME

导入成功后,这将保存现有资源的状态。

  1. 执行 terraform plan 检查资源
  2. 您现在可以更新到现有资源