はじめに
S3バケット内のオブジェクトを全削除したい時、皆さんはどうしていますか?
数千件程度なら aws s3 rm --recursive コマンドで十分ですが、数百万、数千万件という膨大なデータがある場合、コマンド実行では数日かかったり、途中でセッションが切れてしまったりすることも珍しくありません。
今回は、コマンドを使わずにS3のライフサイクルルールを設定するだけで、AWS側に削除をお任せして効率的に全削除を行う方法をご紹介します。
設定手順
削除対象バケットの「バージョニング設定」の状態に合わせて、以下のルールを作成して適用します。
※設定はバケットの [管理] タブ > [ライフサイクルルールを作成] から行います。
バージョニング「あり」のバケット場合
全ての世代(現行・旧バージョン)を完全に削除するために、以下の3項目すべてにチェックを入れます。
-
[✔] オブジェクトの現行バージョンを有効期限切れにする
-
オブジェクト作成後の日数:
1日
-
-
[✔] オブジェクトの非現行バージョンを完全に削除
-
オブジェクトが現行バージョンでなくなってからの日数:
1日 -
保持する新しいバージョンの数:
空欄(指定しない)
-
-
[✔] 有効期限切れのオブジェクト削除マーカーまたは不完全なマルチパートアップロードを削除
-
[✔] 不完全なマルチパートアップロードを削除
-
日数:
1日
-
バージョニング「なし」のバケットの場合
シンプルな構造のため、以下の設定のみでOKです。
-
[✔] オブジェクトの現行バージョンを有効期限切れにする
-
オブジェクト作成後の日数:
1日
-
-
[✔] 有効期限切れのオブジェクト削除マーカーまたは不完全なマルチパートアップロードを削除
-
[✔] 不完全なマルチパートアップロードを削除
-
日数:
1日
-
ここがポイント
-
「不完全なマルチパートアップロード」の削除
大きなファイルのアップロードに失敗した際、目に見えない「ゴミデータ」がストレージ容量を消費し続けていることがあります。これにチェックを入れることで、隠れたコストも一掃できます。 -
削除マーカーの整理
バージョニングありの場合、単に削除するだけでは「削除マーカー」という目印が残り続けてしまいます。この設定を入れることで、バケットを完全に空の状態に近づけられます。
作業上の注意点
- 反映までのタイムラグ
ルール設定後、実際にオブジェクトが消え始めるまでには最大24〜48時間程度かかる場合があります。
設定してすぐに消えなくても焦らず待ちましょう。 - 削除後のルール無効化を忘れずに!
オブジェクトがすべて消えたことを確認したら、必ずライフサイクルルールを削除または無効化してください。
忘れて放置すると、後日新しくアップロードしたファイルも1日で勝手に消えてしまいます。 - 3. ストレージクラスによる最低保存期間
S3 Intelligent-TieringやArchive系など、一部のクラスでは「最低保存期間(30日〜)」が設定されています。
期間内に削除しても、残日数分の料金が発生する場合がある点に注意してください。
参考:コマンドで手動削除する方法
ファイル数が少なく、即座に削除したい場合は、従来通りCloudShell等で以下のコマンドが有効です。
aws s3 rm s3://<バケット名> --recursive
まとめ
大量のデータを削除するのは神経を使う作業ですが、ライフサイクルルールを活用すれば「設定して待つだけ」という非常にスマートな解決が可能です。 ぜひ、大量データ管理の引き出しの一つとして持っておいてください!




