如何在 terraform apply 中移动 terraform 资源

How to move terraform resource in terraform apply

我在我的 terraform 模块中定义了自定义资源:

resource "aws_alb_target_group" "whatever" 
{
   ....
}

原来whatever这个名字不好,我需要更新它。

经典的做法是登录到每个环境并执行 terraform state mv,但是我有很多环境,并且没有自动执行此类操作。

如何在不手动移动状态的情况下更改资源名称(仅通过编辑 Terraform 模块和应用计划)?

根据问题中的解释,我猜你最好的选择是使用 moved 块 [1]。因此,例如,在您的情况下是:

resource "aws_alb_target_group" "a_much_better_whatever" 
{
   ....
}

moved {
  from = aws_alb_target_group.whatever
  to   = aws_alb_target_group.a_much_better_whatever
}

编辑:正如@Matt Schuchard 指出的那样,moved 块仅适用于 Terraform 版本 >=1.1.0

编辑 2:根据@Martin Atkins 的评论,将资源名称更改为 移动到 而不是 从 [= 移动的资源名称26=].


[1] https://www.terraform.io/language/modules/develop/refactoring#moved-block-syntax