Terraform 重命名而不是删除资源?

Terraform 重命名而不是删除资源?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,在重新组织/重命名资源时,是否有任何方法可以避免删除资源?示例:当我第一次实现CloudFront Terraform时,它在我的项目中是一个独立的子目录,后来我切换到将它用作项目中的一个模块。我的根Terraform配置,但这导致Terraform想要删除旧的CloudFront发行版并创建一个新的: Terraform will perform the following actions: - aws_cloudfront_distribution.main_site_distrib

在重新组织/重命名资源时,是否有任何方法可以避免删除资源?示例:当我第一次实现CloudFront Terraform时,它在我的项目中是一个独立的子目录,后来我切换到将它用作项目中的一个模块。我的根Terraform配置,但这导致Terraform想要删除旧的CloudFront发行版并创建一个新的:

Terraform will perform the following actions:
    - aws_cloudfront_distribution.main_site_distribution
    + module.cloudfront.aws_cloudfront_distribution.main_site_distribution

有没有办法强迫Terraform重新命名资源?

不幸的是,Terraform不知道您已经重命名/移动了资源,但您可以通过使用来告诉它在该状态下资源应该存储在哪里

在您的情况下,如果您运行:

terraform state mv aws_cloudfront_distribution.main_site_distribution module.cloudfront.aws_cloudfront_distribution.main_site_distribution
然后运行另一个计划,您应该看不到任何更改(或者只看到您对资源所做的更改以及移动)