📖

リソースを削除せずにTerraform管理外にできるremovedブロック

に公開
3

概要

リソースを削除せずにTerraform管理外としたい場合に有効

似ているものでignoreがあるが、あれはtfstateとデプロイ済みリソースとの差分を特定の設定項目のみ無視する意味になるので、少し挙動が違う

でも、わかると便利

やり方

以下のようにresourceブロックを削除した上で、removedブロックを記述する

destroy = falseにすることで物理削除はされなくなる

- # resourceブロックは削除する
- resource "aws_s3_bucket" "hoge-s3-bucket" {
-   bucket = "hoge-test-s3-bucket"
- }

+ removed {
+   from = aws_s3_bucket.hoge-s3-bucket
+   lifecycle {
+     # falseするとリソースが削除されなくなる (デフォルトはtrueなので注意)
+     destroy = false
+   }
+ }

対象resourceブロックを削除しておかないと以下のようなエラーになるので注意してください。


This statement declares that aws_s3_bucket.hoge-s3-bucket was removed, but it is still declared in configuration.

Discussion