模块化的 Terraform 代码想要销毁并重新创建 S3 存储桶
Modularised terraform code wants to destroy and recreate an S3 bucket
为了便于理解,这是我的问题的简化示例。
我的团队曾经通过 module1
管理 S3 存储桶,它调用 module2
,其中包含存储桶的代码。
production_account/ --(invokes)--> module1/ --(invokes)--> module2/s3.tf
但后来他们决定重构代码,直接调用module2
.
production_account/ --(invokes)--> module2/s3.tf
因此,当我现在进行地形规划时,我得到:
module.module1.module.module2.aws_s3_bucket.bucket will be destroyed {
...
}
module.module2.aws_s3_bucket.bucket will be created {
...
}
简而言之,terraform 想要重新创建 s3 存储桶。这样做的问题是所有数据都会丢失。
有没有办法将现有的存储桶导入状态 和 以通过模块 2 对其进行管理?
terraform import module.module1.module.module2.aws_s3_bucket.bucket
解决了我问题的前半部分。
是的。使用 terraform state mv 而不是 import
.
terraform state mv module.module1.module2.aws_s3_bucket.bucket module.module2.aws_s3_bucket.bucket
为了便于理解,这是我的问题的简化示例。
我的团队曾经通过 module1
管理 S3 存储桶,它调用 module2
,其中包含存储桶的代码。
production_account/ --(invokes)--> module1/ --(invokes)--> module2/s3.tf
但后来他们决定重构代码,直接调用module2
.
production_account/ --(invokes)--> module2/s3.tf
因此,当我现在进行地形规划时,我得到:
module.module1.module.module2.aws_s3_bucket.bucket will be destroyed {
...
}
module.module2.aws_s3_bucket.bucket will be created {
...
}
简而言之,terraform 想要重新创建 s3 存储桶。这样做的问题是所有数据都会丢失。
有没有办法将现有的存储桶导入状态 和 以通过模块 2 对其进行管理?
terraform import module.module1.module.module2.aws_s3_bucket.bucket
解决了我问题的前半部分。
是的。使用 terraform state mv 而不是 import
.
terraform state mv module.module1.module2.aws_s3_bucket.bucket module.module2.aws_s3_bucket.bucket