/ terraform

Versioning terraform.tfstate

この記事のS3ライフサイクルの設定では、90日以上更新のないtfstateファイルを削除してしまうので注意…。


助言を頂いた!

その後口頭で公式のベストプラクティス的なものにも書いてあった気がすると聞いたので確認したところ、オフィシャルのドキュメントでS3でtfstate管理する場合はBucket Versioningを有効にすることを激しく推奨していました!

Warning! It is highly recommended to enable Bucket Versioning on the S3 bucket to allow for state recovery in the case of accidental deletions and human error.

Remote State Backend: s3 - Terraform by HashiCorp

さっそくバージョニングと、ついでにライフサイクルの設定をしてみます。

上の例では90日でオブジェクトが失効し、365日後に完全削除されると言う感じでしょうか...。分かり辛い...。これ短いサイクルのテストバケット作って実際見た方が良いかも。

でも丁寧な検証記事があったのでこれを見ておけばいいか...。

無害な変更をtfファイルに加えてtfstate更新してバージョニングされてるか見てみました。「表示」に切り替えるとバージョン一覧が確認できます。一番上が一番新しいバージョンです。nullなやつはバージョニング設定する前に作成したtfstateです。バージョニング設定前のファイルもバージョニングに組み込まれはするけど、idがnullになる感じなのか。

あとcliでもバージョニング有効化試そうと思ったけど対応していないっぽい(SDKでは対応していた)。

これでtfstateの平和は守られる...。