1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

S3に置いてある過去バージョンのオブジェクトを、ライフサイクルポリシーで一気に消す

Posted at

バージョニングを有効にしたけどうっかりライフサイクルポリシーを設定し忘れてどんどん過去バージョンのファイルが溜まっていって
気づいたら容量がとんでもないことになっていることってありますよね(ない)。
時すでに遅いがとりあえず過去バージョンのファイルを削除せねば、でもファイルをちまちま削除するのは面倒だし。。。
もしかしてライフサイクルポリシーを設定すれば一気に削除できるもんなのだろうか?
というわけで検証してみました。

結論:できる

ライフサイクルポリシーが有効になった時点以降のファイルしかポリシーが適用されないのではないのかしらん?とか思っていたのですが、そんなことはありませんでした。ちゃんとバケット内のファイル全て(プレフィックスを設定していれば対象のファイル)に適用されます。
結論としては、設定した日数を経過しているファイルはすべてポリシー通りに削除されます。

設定手順

S3コンソールにアクセスし、バケットの管理からライフサイクルルールの追加を選択します。
ストレージクラスの移行はしないのでそこは設定しませんでした。
次に失効の設定ですが、ここらへんは各々の要件にしたがって入力してください。
自分の場合は現行のファイルも過去バージョンのファイルもある程度日数が経過したら削除したいので、現行のバージョン以前のバージョンにチェックを入れました。
001.png

設定後の話

すぐにファイルが削除されるのかなと思ったのですが、S3コンソールを確認すると特に変化は見られませんでした。ライフサイクル設定の要素によると、オブジェクトが作成された日時を翌日の00:00UTC(日本時間9:00)に丸めてアクションを実行するようです。
でもバージョニングされたファイルの場合はすぐにアクションが実行されそうですが、結果整合性の関係もありすぐに削除されなさそうです。翌日に再度確認してみるとファイルが削除されてました。

なお数百万ファイルで200GBくらいの規模のバケット×2にライフサイクルの設定を行ったところ、一方のバケットは翌日にファイルが削除されていたのですが、もう一方のバケットは翌日になってもファイルが削除されていませんでした。
バケットポリシーで何か引っかかってるのかなとか見返してみたのですが、特に変なところもないので何でだろーと思っていたところ次の日には消えていたので、たぶんS3の結果整合性の関係で反映に時間がかかったのだと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?