【AWS】ライフサイクルでS3にあるファイルを定期的に消す方法
S3とは?
AWSにはS3という機能がある。この機能はファイルストレージであり、主に各所連携時の一時ファイルとして使われる。PCのファイルと同じで特に何もしないとファイルは溜まっていく一方となる。
ライフサイクルとは?
S3にはライフサイクルという機能がある。これを活用することで、ストレージ内のファイル操作を自動で行なうことができる。
バケットの管理画面
[Amazon S3] > [バケット] > [(ユーザ定義バケット名)]
ライフサイクルルール
S3にあるオブジェクトを別のストレージに移動したり、設定した期間で削除したりしたいときに使用する設定。レプリケーションルール
同じネットワーク内や遠隔地にサーバを設置して、リアルタイムでデータをコピーしたいときに使用する設定。インベントリ設定
バケット内のオブジェクト情報、メタデータなどを一挙に出力したいとき使用する設定。
※今回は一定期間経過後にファイルを削除したいので「ライフサイクルルール」を利用します。
参考文献
ライフサイクルルールの設定項目
「ライフサイクルルールを作成する」ボタン押下。
①ライフサイクルルール名
ルール名を記入する。任意の文字列が設定可能で、最大255文字まで。
➡設定例)lifecycle-access-log
②ルールスコープを選択
ライフサイクルを適用する範囲を、特定のフォルダを対象にするか、バケット内のすべてを対象にするかを選択する。
➡今回は、特定の階層に限定したいので「1つ以上のフィルターを使用してこのルールのスコープを制御する」を選択した。
③プレフィックス
ルールを適用したいフォルダ名(S3上ではプレフィックスという)を記入する。
この際、バケット名([Amazon S3] > [バケット] > [(ユーザ定義バケット名)])は入力してはいけない。
➡設定例)AmazonS3>バケット>backetAAA>dirNameだった場合、「dirName」を指定する。(backetAAA\dirNameという形はNG)
参考文献
④オブジェクトタグ
タグを付けたオブジェクトごとにポリシーを設定したりアクセス権を付与したりするための設定。キー/値のペア形式で設定する。
➡設定例)今回は削除だけであり、複雑な制御はしないため未設定とした。
参考文献
⑤オブジェクトサイズ
特定のS3バケットでプレフィックスごとに複数種類のオブジェクトをまとめて保管しているなどでオブジェクトサイズにバラつきがある場合の、ストレージ移行用として設定する。
例えば、ストレージプランを安いほうに移行したいときに35GBのオブジェクトだけを対象にする、などの使い方をする。
➡今回は削除だけであり、複雑な制御はしないため未設定とした。
参考文献
⑥ライフサイクルのアクション
オブジェクトの最新バージョンをストレージクラス間で移動
⇒オブジェクトを移動する場合にレ点を入れる。
➡今回は移動しないため未設定とした。オブジェクトの非現行バージョンをストレージクラス間で移動
⇒非現行版(各オブジェクトの過去の版)を移動させるかどうかの設定。
➡今回は移動しないため未設定とした。オブジェクトの現行バージョンを有効期限切れにする
⇒当該オブジェクトにアクセスできる有効期限を設定する。
➡今回は2週間経過したファイルを消したいので、「14」と設定した。オブジェクトの非現行バージョンを完全に削除
⇒No3にレ点を入れた場合に設定する項目。ライフサイクルの仕様上、No3で有効期限を過ぎたものは即時で消されず、非現行バージョンとして管理されることになる。非現行バージョンとなってから何日後に物理削除(完全に削除)するか?を設定する。この項目を未設定にしたままだと、非現行バージョンとしてS3上にずっとオブジェクトが残り続けることになる。
➡今回は2週間経過したファイルをすぐに消したいので、最短の「1」と設定した。有効期限切れのオブジェクト削除マーカーまたは不完全なマルチパートアップロードを削除
⇒有効期限に達しているが、まだ完全にアップロードされていない状態にある資産を削除するかどうかの設定。
➡アップロードに失敗しているなど不完全なファイルは不要でありすぐに消してほしいので、最短の「1」と設定した。
参考文献
No5の補足資料
S3のオブジェクトをライフサイクルルールを使用して削除してみた