[AWS] S3のライフサイクル設定をしても128KB以下のファイルは移動されない

S3のライフライクル設定を使ってハマって数日無駄にしましたので今後の自分への戒めのためにブログにします。

S3のライフサイクル設定を使って料金を安くしたい

まず、S3で料金を気にするほどデータを登録しない場合は何も考えなくていいです。このブログ終了です。

そうではなく、S3のストレージコストが侮れない方はライフサイクル設定を行って、ストレージクラスが自動で切り替わるようにしておくと良いかもしれません。

例えば、S3のストレージ料金ですが、デフォルトの「S3 標準」は次のような価格感です。

これを長期保存用の「S3 Glacier Instant Retrieval」にすると、1/5程度のストレージ料金になります。(リクエスト毎に費用がかかったりして高くなるケースもあるのでご注意ください。)

今回、「S3 標準」から「S3 Glacier Instant Retrieval」に自動で移行させることにしました。

ライフサイクルの設定を行う

documents/ というプレフィックスを付けたキー(仮想のディレクトリ)内部のファイルのストレージクラスを変更したかったので、次のような登録を行いました。

最小オブジェクトサイズは 未設定 としていました。(最小オブジェクトサイズの下に小さい文字で何か書いてある気がしますが無視。)

テストを開始して何日たってもアップロードしたファイルのストレージクラスが変わらない!

何故だ!(プンプン!!)

128KB以下のファイルは移動されない

詳細のリンクを開いて中をちゃんと読むと、

Objects smaller than 128 KB will not transition by default to any storage class (128KBより小さいオブジェクトは、デフォルトからどのストレージクラスにも遷移しません)

と、書いてありました!! テストしていたファイルがこれより小さいものしかなかったので何が間違っているのか分からずにハマってしまいました。

大きいファイルで試したところ無事、ストレージクラスが変わりました。

まずドキュメントを読め→自分。