
S3ライフサイクルルールの削除ルールでフォルダを残したい
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていたこと
S3バケットのライフサイクルルールで、スコープをバケット全体にし、削除ルールを設定していたところ、フォルダも削除されてしまいました。
フォルダを残しておくにはどうすれば良いでしょうか。
どうすればいいのか
まず、S3にフォルダという概念は存在しません。 S3はオブジェクトストレージのため、ディレクトリ構造ではなくオブジェクト名でデータを管理しているため、階層がありません。
詳細は以下の弊社ブログをご覧ください。
フォルダという概念はありませんが、マネジメントコンソールから「フォルダの作成」でフォルダを作成した場合、S3はフォルダ名をキーとする0バイトのオブジェクトを作成します。
フォルダを使用して Amazon S3 コンソールのオブジェクトを整理する - Amazon Simple Storage Service
Amazon S3 にフォルダを作成すると、S3 は、指定したフォルダ名に設定されたキーを持つ 0 バイトのオブジェクトを作成します。例えば、バケットに photos という名前のフォルダを作成した場合、Amazon S3 コンソールは photos/ キーを使用して 0 バイトのオブジェクトを作成します。
そのため、S3バケットのライフサイクルルールでフォルダを削除したくない場合、フィルターを利用して削除するオブジェクトの最小オブジェクトサイズを1バイトにする方法が考えられます。
検証
バケットにオブジェクトを以下のように配置しました。
test1/ test2/は「フォルダの作成」から作成しています。
s3test.html test1/ test2/ test2/testtext.txt


対象のバケットにライフサイクルルールを設定します。
「管理」タブから「ライフサイクルルールを作成」を選択

以下のように設定しました。
ルールスコープを選択 1 つ以上のフィルターを使用してこのルールのスコープを制限する 最小オブジェクトサイズを指定 1 バイト ライフサイクルルールのアクション オブジェクトの現行バージョンを有効期限切れにする オブジェクトの現行バージョンの有効期限が切れる オブジェクト作成後の日数 1日後

結果
1日後...
s3test.html は削除され、test1/ test2/ のみ残りました。

test2/ 配下の testtext.txt も削除されていました。







