当代码移动到模块时,Terraform正在破坏AWS资源

当代码移动到模块时,Terraform正在破坏AWS资源,terraform,amazon-cloudwatch,terraform-provider-aws,Terraform,Amazon Cloudwatch,Terraform Provider Aws,最初我使用Terraform脚本创建CloudWatch日志组 resource "aws_cloudwatch_log_group" "main_server_log_group" { name = "server_name" retention_in_days = 60 } 我应用了它,后来我将它移动到专用模块并重命名 resource "aws_cloudwatch_log_group" "server_log_group" { name

最初我使用Terraform脚本创建CloudWatch日志组

resource "aws_cloudwatch_log_group" "main_server_log_group" {
  name              = "server_name"
  retention_in_days = 60
}
我应用了它,后来我将它移动到专用模块并重命名

resource "aws_cloudwatch_log_group" "server_log_group" {
  name              = "${var.server_name}"
  retention_in_days = 60
}
并在
main.tf

module "main_server" {
  source = "./modules/server"
  server_name = "${local.main_server_name}"
}
现在Terrafrom apply正在摧毁原来的CloudWatch组并创建一个新组

module.main_server.aws_cloudwatch_log_group.main_server_log_group[0]: Creating...
aws_cloudwatch_log_group.main_server_log_group: Destroying... [id=xxxx]
我想这是因为地形资源的名称已经改变了,不是吗? 这是预料不到的。CW组的名称尚未更改


重构Terraform代码时是否有保留现有资源的方法?

找到了解决方案,显然可以将资源移动到模块中。州文件需要更新-

更新 移动状态对我不起作用。但移除状态和导入状态成功了

terraform state rm 'my_resource'
terraform import ...