重命名而不是删除资源?

Posted

技术标签:

【中文标题】重命名而不是删除资源?【英文标题】:Rename instead of delete resource? 【发布时间】:2018-08-13 04:58:52 【问题描述】:

在重组/重命名资源时,有什么方法可以避免资源删除?示例:当我第一次实现 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 重命名资源?

【问题讨论】:

【参考方案1】:

不幸的是,Terraform 不知道您已经重命名/移动了资源,但您可以使用 terraform state mv 告诉它资源应该存储在状态中的哪个位置。

如果你跑了,你的情况:

terraform state mv aws_cloudfront_distribution.main_site_distribution module.cloudfront.aws_cloudfront_distribution.main_site_distribution

然后运行另一个计划,您应该看不到任何更改(或只看到您对资源所做的更改以及移动)。

【讨论】:

以上是关于重命名而不是删除资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写我的云结构更可重用而不是重命名资源

如何使用 java 代码重命名和移动文件而不删除内容

如何删除一列并创建一个新列而不是在 EF Core 中重命名?

Visual Studio 2010:如何重新映射 F2 以重命名文件而不是打开对象浏览器

获取 Perl 重命名实用程序而不是内置的重命名

Python IO 是不是允许在 Windows 上删除/重命名打开的文件?