はじめに
とある案件のクロージングでS3のオブジェクトを消すのにちょっと苦労したので、その共有です。時間のない方はまとめだけよむとよいです。
マネジメントコンソールから消す 1日目
AWSマネジメントコンソールにログインして、S3に移動、バケットを選択して「delete」
次の日になったら消えるだろうということで、その日はそのまま帰りました。
マネジメントコンソールから消す 2日目、朝
朝、会社にくると、まったく消えていませんでした。STSをつかったログインだったので1時間程度で削除権限がなくなったようです。
IAMユーザーを作成して、そのユーザーで削除を実行しました。
その間、別の作業をすることにしました。
マネジメントコンソールから消す 2日目、夜
夜、朝の作業をおもいだし、実行結果を確認しようとしました。
ですが、削除処理を実行しているブラウザ画面がどこかにいってしまいました。たぶん、別のページにリロードしてしまったのでしょう。バケットにオブジェクトは一杯のこっている雰囲気です。
ここで、S3のライフサイクルルールをおもいだしました。これは
「S3のオブジェクトに有効期限を設定する」
という機能で、期限のたったオブジェクトをアーカイブ(gracierに保存)、失効(削除される)が可能です。
ライフサイクルをつかった削除方法
バケットを選択して、ライフサイクルを選択、「ルールを追加する」をクリックします。
バケット単位の場合はなにも変更せず「ルールの設定」をクリック、一部のオブジェクトを消したい場合はプレフィックスを設定します。
最新バージョンの操作は「失効のみ」を選択します。
失効する日は1日後(1が最小値です)。
「レビュー」をクリック
必要ならルール名を入力して「ルールの作成と有効化」をクリック
バケット画面をみるとルールが追加されていることが確認できます。
マネジメントコンソールから消す 3日目、昼
UTCだと日付の区切りが朝9:00なので、少し時間をまってお昼に確認したところ無事全部のオブジェクトが削除されていました。メデタシメデタシ。
まとめ
S3の100万オブジェクトの削除は時間がかかるので、ライフサイクルルールをつかうとよいです。一日かかりますが、確実にファイルは消えます。
でも、これ間違って使うと恐ろしい機能ですのでご注意ください。