S3の利用料金を損してるかも?安心して利用するための設定をしましょう
はじめに
こんばんは、菅野です。 皆さんは Amazon S3 の利用料金って厳密な計算なんてしてないですよね? もちろん私もしてませんし、今後も恐らくしません。
でも、自分では知らないうちに無駄な利用料金が発生してるかもしれないとしたらどうでしょう? 今回のブログではその「無駄」を自動で削減してもらうための設定についてご紹介します。
マルチパートアップロードを知ってますか?
S3 は最大5TBまでのオブジェクト(ファイル)を保管できるのですが、保存のため一度に送信できるサイズは5GBという制限があります。 ではどうやって5TBのオブジェクトを保存するのか?というと aws cli や SDK を使って小さく分割したファイルを送信し、全ての部品が揃ったら S3 で一つのファイルに復元されます。 この機能を「マルチパートアップロード」といいます。
マルチパートアップロードを利用するメリットとして、先ほど記載したように5GBの制限以上のファイルを保存できることもそうですが、他にも以下のようなメリットがあります。
- 複数の部分ファイルを同時に送信することで、広帯域のネットワークを有効に利用できる
- 不安定なネットワークでも中断・再開を使うことでアップロードができる
- 再開は中断したところからなので、最初から送信する必要はない
無駄の正体は?
今回のブログで問題としているのは、このマルチパートアップロードが失敗した時に残ってしまう「部分ファイル」です。 この部分ファイルはマネジメントコンソールから見ることも消すこともできませんので、気づいていない人は多いのではないでしょうか。 見えないファイルにも関わらず容量あたりの利用料金は掛かっていて、それが今回の無駄の正体となります。
無駄があるか調べる方法は?
aws cli を使い、以下のコマンドを実行することで不完全なマルチパートを一覧表示できます。
aws s3api list-multipart-uploads --bucket バケット名
詳しくは以下のページの「アップロードのエラーを解決する」をご覧ください。 削除コマンドを実行する必要は無いので、そこはご注意ください。 AWS CLI を使用して、Amazon S3 にファイルをマルチパートアップロードする方法を教えてください。
無駄を無くす方法は?
普段皆さんも使っている「ライフサイクルポリシー」の設定により自動で無駄の原因となるファイルを削除することが可能です。 aws cli や SDK などでファイルをアップロードしている全てのバケットに対して設定することをおすすめします。
ライフサイクルポリシーの設定方法
- バケットをクリックします
- 管理ページを開きます
- 「ライフサイクルルールの追加」ボタンをクリックします
- 「名前とスコープ」の手順では、ルール名を入力して「次へ」をクリックします
- 「移行」の手順では、何も変更がいらないので「次へ」をクリックします
- 「有効期限」の手順が今回の目的の設定です
- ここでは、「不完全なマルチパートアップロードをクリーンアップする」にチェックを入れます
- 日数は7日で問題ありませんが、最低でも3日くらいにしておくことをおすすめします。あまりにも短いと、アップロード中の部分ファイルが消されて失敗してしまいます
- 「次へ」をクリックします
- 「確認」の手順では、「有効期限」に「不完全なマルチパートアップロードをクリーンアップする 次の後: 7 日間」と書いてある事を確認して「保存」をクリックします
最後に
上記手順でライフサイクルポリシーの設定はできましたでしょうか? この設定をしておくことで無駄な容量に対する料金がかからなくなりますので、今後は新しいバケットを作成する時のルールとしていただければ安心して使えると思います。 是非このブログを参考に設定してみてください。