This is a simplified example of my problem, for the sake of understanding.
My team used to manage an S3 bucket through the module1
, which invoked module2
, which contained the code of the bucket.
production_account/ --(invokes)--> module1/ --(invokes)--> module2/s3.tf
But then they decided to refactor the code, and directly invoke module2
.
production_account/ --(invokes)--> module2/s3.tf
As a result, when I terraform plan now I get:
module.module1.module.module2.aws_s3_bucket.bucket will be destroyed {
...
}
module.module2.aws_s3_bucket.bucket will be created {
...
}
In short, terraform wants to recreate the s3 bucket. The problem with this is that all data will be lost.
Is there a way to import the existing bucket to the state and to manage it through module 2?
terraform import module.module1.module.module2.aws_s3_bucket.bucket
solves the first half of my question.
CodePudding user response:
Yes. Use terraform state mv not import
.
terraform state mv module.module1.module2.aws_s3_bucket.bucket module.module2.aws_s3_bucket.bucket