ファイルのライフサイクル管理
S3でライフサイクルを検討する場合、
- S3 → 破棄
- S3 → Standard-IA(低頻度アクセス)
- S3 → Glacier → 破棄
のように様々なパターンが考えられますが、今回は前回行ったS3バージョン管理と組み合わせて、
【最新バージョン】: S3 → Gracier → 破棄
【古いバージョン】:S3 → 破棄
のパターンで設計してみます。
また、バージョン管理はバケット単位の設定となりますが、ライフサイクルはより細かい単位(パス・オブジェクト)で設定できます。
移行・破棄のタイミングはいつ?
AWSのガイドには以下のように記載されています。
Amazon S3 は、ルールに指定された日数をオブジェクトの作成時間に加算し、得られた日時を翌日の午前 00:00 UTC (協定世界時) に丸めることで、時間を算出します。たとえば、あるオブジェクトが 2014 年 1 月 15 日午前 10 時 30 分 (UTC) に作成され、移行ルールに 3 日と指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分 (UTC) となります。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/intro-lifecycle-rules.html
日本時間でいくと、午前9時が基準となります。
例えば、削除日数を1日とした場合、
今日の午前9時までにファイルを作成すると明日の午前9時以降に削除されます。
また、今日の午前9時以降にファイルを作成すると明後日の午前9時以降に削除されることになります。
設定
S3のバケットを選択して、「管理」をクリックし、「ライフサイクルルールの追加」をクリックします。
ルール名を入力します。
ストレージクラスの移行設定を行います。
今回は現行バージョンを作成から1日後にGracierへ移行します。
失効の設定を行います。
現行バージョンは2日後に削除するので、「現行バージョン」にチェックを入れ、日数を「2」と入力しました。
以前のバージョンは1日後削除するので、「以前のバージョン」にチェックをいれ、日数に「1」を入力しました。
また、今回はマルチパートアップロードを使用しませんが、不完全なデータは常に削除したいので「不完全なマルチパートアップロードをクリーンアップする」にチェックをいれました。
日数はデフォルトの「7」のままとしました。
確認して「保存」をクリックします。
確認します
現在のバケットの状態は、ファイルが1つあり最新バージョンと古いバージョンが1つあります。
上記にも書きましたが、移行・破棄のタイミングは日本時間午前9時を基準としております。
ファイルは午前9時以降に更新したので、2日後に最新バージョンがGracierに、古いバージョンが破棄されている予定です。
【2日後】
最新バージョンはGlacierへ移行。古いバージョンは削除されておりました。
(午前9時過ぎに確認したのですが、ブラウザのキャッシュなのか状態が変わってませんでしたが、昼過ぎに確認できました。)
【さらに一日経過】
Glacierへ移行した最新バージョンのファイルが削除されてバケットが空になっておりました。
ちなみに削除されたのは昼過ぎでした。