概要
S3のライフサイクルポリシーを利用することで、指定した期間を超えたオブジェクトをGlacier、または低料金のストレージタイプへ移行することができ、運用の手間をかけることなくストレージ料金の削減を見込むことができます。
しかし、よくドキュメントを読んでみると、「GlacierへのPUTリクエスト(リクエスト1,000件ごとに0.055USD)」の記載があり、GlacierへのPUTリクエストも課金対象であるため、1オブジェクトのサイズが小さく、オブジェクト数が多いようなケースでは、Glacierへの移行によるコストメリットが得られない場合があります。
今回ライフサイクルポリシーの適用を検討していた、ALBのアクセスログの出力先S3バケットのオブジェクト数とサイズ推移から、スタンダードのみで運用した場合とGlacierに移行した場合のコスト比較を行いました。
現状のオブジェクト数、サイズ推移
当該環境で実際に運用しているALBのアクセスログの出力先S3バケットのオブジェクト数、サイズの推移は以下になります。
期間 | オブジェクト数 | サイズ(GB) |
---|---|---|
1ヶ月目 | 2,575,000 | 160.48 |
2ヶ月目 | 4,900,000 | 261.6 |
3ヶ月目 | 7,170,000 | 341.4 |
各料金の算出式
GlaicerへのPUTリクエスト料金(1000件単位で0.055$)
(オブジェクト数 / 1000) * 0.055USD
Glaicerのストレージ料金
サイズ(GB) * 0.004USD
Standardのストレージ料金
サイズ(GB) * 0.023USD
コスト比較
上記のオブジェクト数、サイズの推移からGlacierに移行した場合とStandardのみで運用した場合のコスト比較を行っていきます。
今回は1ヶ月目のオブジェクトをGlacierに移行した場合を考えてみます。
各料金 | Glacierに移行した場合($) | Standardで運用した場合($) |
---|---|---|
GlaicerへのPUTリクエスト料金 | 141.625 | - |
Glaicerのストレージ料金 | 0.64192 | - |
Standardのストレージ料金 | 4.16116 | 8.1936 |
合計 | 146.42808 | 8.1936 |
今回のようにオブジェクト数が多く、1ファイルサイズが小さい場合はGlaicerのストレージ料金の削減効果よりもPUTリクエスト料金の方が大きく上回り、Glacierに移行せずに運用した方が安く運用できることがわかります。
今回のケースでは1ファイルあたり約50KBでしたが、Glacierに移行した方がコスト削減に繋がるファイルサイズはいくつなのでしょうか。損益分岐点となるファイルサイズを追っていきます。
###ファイルサイズの損益分岐点
計算を単純化するために月に追加されるファイル数を1000に固定し、1ファイルあたりのサイズを変動させてシミュレートしました。計算式は割愛しますが、上記と同じ計算方法を使っています。
1ファイルあたりのサイズ | Glacierに移行した場合($) | Standardで運用した場合($) |
---|---|---|
1MBの場合 | 0.105 | 0.069 |
2MBの場合 | 0.155 | 0.138 |
2.9MBの場合 | 0.2 | 0.2001 |
3MBの場合 | 0.205 | 0.207 |
結論
上記の通り、Glacierに移行する際にコスト削減効果が得られるのは1ファイルのサイズが2.9MB以上という結果になりました。
AWSのコスト計算は複雑化しており確認が面倒に思うこともあるのですが、コスト削減を目的とした設定が実はコスト増の原因となっていた、、、という本末転倒なことにならないよう、事前に確認することの大切さを再確認しました。
参考