为啥 Terraform 要销毁这个导入的 aws_organizations_organizational_unit?

Posted

技术标签:

【中文标题】为啥 Terraform 要销毁这个导入的 aws_organizations_organizational_unit?【英文标题】:Why does Terraform want to destroy this imported aws_organizations_organizational_unit?为什么 Terraform 要销毁这个导入的 aws_organizations_organizational_unit? 【发布时间】:2022-01-14 13:04:36 【问题描述】:

我们正在尝试使用 Terraform v1.0.9 和 aws provider v3.64.2 为最近部署的 AWS 组织资源构建状态文件。

aws_organizations_organization 已更正为使用 terraform import aws_organizations_organization.my_organisation [id] 导入。 Terraform 不想在导入后破坏组织。

但是,当单元被导入 - AWS_DEFAULT_REGION=eu-west-2 terraform import -config=tf/units/infrastructure -var 'organisation_root=[id]' aws_organizations_organizational_unit.my-ou-infrastructure ou-abc0-ab0cdefg 时,它似乎导入成功,但在 terraform plan 上,它想要销毁 OU 并重新创建它。

# aws_organizations_organizational_unit.my-ou-infrastructure will be destroyed
- resource "aws_organizations_organizational_unit" "my-ou-infrastructure" 
    - accounts  = [] -> null
    - arn       = "arn:aws:organizations::000000000000:ou/o-xxxxx/ou-xxxx-xxxxxx" -> null
    - id        = "ou-xxxx-xxxxxx" -> null
    - name      = "name" -> null
    - parent_id = "id" -> null
    - tags      =  -> null
  

...

# module.my_organisation_units.module.my_organisation_unit_infrastructure.aws_organizations_organizational_unit.my-ou-infrastructure will be created
  + resource "aws_organizations_organizational_unit" "my-ou-infrastructure" 
      + accounts  = (known after apply)
      + arn       = (known after apply)
      + id        = (known after apply)
      + name      = "name"
      + parent_id = "id"
    

...

Plan: 31 to add, 0 to change, 1 to destroy.

这应该发生吗?从文档来看,导入 OU 看起来非常简单。

【问题讨论】:

看起来不同的资源...一个在根目录下另一个在模块下 谢谢。这是我第一次使用import。看起来我需要对模块使用语法terraform import module.foo.aws_instance.bar i-abcd1234 【参考方案1】:

我们需要将资源作为模块导入terraform import module.my_organisation_units.module.my_organisation_unit_infrastructure.aws_organizations_organizational_unit.my-ou-infrastructure ou-abc0-ab0cdefg

【讨论】:

以上是关于为啥 Terraform 要销毁这个导入的 aws_organizations_organizational_unit?的主要内容,如果未能解决你的问题,请参考以下文章

将 aws 资源导入具有 for_each 的 terraform 模块

terraform 自动缩放组销毁超时

Terraform:导入 aws 资源时出现凭证错误 - 调用 sts 时出错:GetCallerIdentity:ExpiredToken

为啥我使用 terraform 资源 aws_route53_record 创建的 Route53 记录无法公开解析?

Terraform AWS 客户端***

Terraform 和 AWS:修改现有策略