バケットのオブジェクトがずっと削除されてた話
ある日、動作テストしてくれてる先輩から、「ステージングのデータが何か消えてるらしいよほげ」と言われました。
そのデータは実行履歴のデータでシステムを使うとデータがAWS S3に溜まって来て、AWS Athenaを利用してデータをクエリしてるのがざっくりの仕組みでした。
オブジェクトを削除してるコードは一切ない、
毎日ちゃんと溜まってる、
他の環境では何ヶ月間ちゃんと溜まってる、
ライフサイクルも必要な特定ディレクトリだけ指定して置いただけでした。
最初はAthenaのTableやDBが削除されると消える?とAthenaを疑ったり、
Terraformの処理のせい?と会社のTerraformマスターを疑ったり、
酔っ払ってやっちゃった?と自分をを疑ってました。
原因
ライフサイクル設定ルールを間違ってルール名に書いてしまったことが恥ずかしい原因でした。
先輩、すみません!
まとめ
こんなアホみたいなミスは誰もしない珍しい話でしたが、ルールを指定しないとS3バケット全体が対象になりますので、お気をつけてください!
ちなみに、今回の事故で何があっても消さない実行履歴のデータだと気づき、Amazon S3 オブジェクトロックを使うことになりました!
🔗S3オブジェクトのロック(なにをどうやっても改竄削除が不可)がリリースされました!