KuriKumaChan’s diary

Kuri ちゃんと Kuma ちゃんの飼い主の独り言

QNAP と クラウドバックアップ (9) - Amazon S3 Glacier Deep Archive による保管とリストアにかかるコスト - 平常時は気にならないコスト

以下、特に数字は私のケースに限った話ですので、皆さんの場合はそれぞれ AWS 料金計算ツール などでシミュレーションしてみることをお勧めします。その際にも事前に目を通していただくことである程度役に立つ情報にはなっていると思います。

久々の NAS とそのバックアップのお話です。私のローカルデータはほとんど NAS (QNAP TS-453Be) に置くことにしてあり、その中で重要だと考える物はクラウド (AWS) に定期的にバックアップしています。この辺りの事は過去のブログ記事でカテゴリー "NAS" のものに目を通していただければおおよそのことを書いてあります。昨年夏には NAS のストレージ構成の変更とともにクラウド側のバックアップ先を同じ AWS でもよりコストの安いストレージクラスに変更しています (S3 Glacier → S3 Glacier deep archive)。

QNAP と クラウドバックアップ (3) - 新しい "S3 Glacier Deep Archive " を試す(雑な整理編) - KuriKumaChan’s diary

その後はあまり構成をいじくり回す事はなく、TS-453Be に週一にスケジュールしているバックアップジョブで新しく NAS に追加されたデータを自動的に Glacier に差分バックアップしています。一度設定すれば淡々と処理してくれるので便利ですよね。

f:id:KuriKumaChan:20220122173932p:plain
NAS はジョブをスケジュールしておけばちゃんとバックアップしてくれる。

そんな感じで毎月 AWS から送られてくる invoice でおおよそ数ドル/月 請求されていることだけは認識していたのですが、Glacier Deep Archive に移行してからのコストをまとめて振り返ったことがないので、忘れないうちに(だいぶ忘れているけれど)整理しておこうと思いました。

Glacier の場合は普通の S3 に比べて料金計算がやや複雑なので、ざっくりとした計算とはなりますがその点はご容赦を。


そもそも Glacier Deep Archive のコスト体系は?

検討当時は調べたはずなのですが、もうすっかり忘れていますので再度調べなおしてみます。
正式な料金案内は下記ページを参照ください。AWS の料金は頻繁に料金改定されています。大抵は安くなる方向で。

aws.amazon.com

上にリンクを貼った AWS の料金ページですが、コスト要素毎に詳しい説明はありますが一覧で Glacier Deep Archive にかかるコスト要素を見ることができないので、それぞれのコスト要素のタグから転記して下の表にまとめてみました。転記間違いがあるかもしれないし、少なくともこの表は更新されないので最新のコストデータについては必ずオリジナルの AWS 情報を確認してください。

コスト要素 US East (Virginia) AP Tokyo 備考
ストレージ 0.00099USD/GB 0.002USD/GB 意外と安い!
リクエストとデータ取り出し 0.0025USD 0.005USD データ取り出し (GB あたり)/大容量
データ転送 0.09USD/GB 0.114USD/GB out, 最初の 10 TB/月
管理と分析 n/a n/a
レプリケーション n/a n/a
S3 Object Lambda n/a n/a

ここで US East と東京の二つのリージョンを並べてありますが、AWS はリージョン毎に料金設定が異なります。latency (レスポンス) を短くしようとか、データは顧客の個人情報なので国内に置こうかといったニーズがあれば東京や大阪を選択するのですが、私の場合個人の写真や音楽データのいざという時の保管用途なのでコスト優先で US East を私は利用しています。

表を見ていただければわかりますが、Glacier に関して言うと、データを保管するために継続的にかかる「ストレージコストと、操作をした時のみに発生する「リクエストとデータ取り出し」「データ転送のコスト要素があります。

ストレージコスト (保管期間中毎月発生)

通常毎月私が請求されているのはストレージコストです。

2021年の月毎のコストを確認する

AWS コンソールでまず確認するのは、コストトータルですね。月別表示で昨年1月から表示してみます。

f:id:KuriKumaChan:20220122180408p:plain
貴重な経験を積んだ 4,5,6 月....
4,5,6月は滅多に行わないクラウド (Glacier) から NAS へのリストア訓練に加え、私が酔った勢いで削除してしまったローカルバックアップファイルの代わりに何回かクラウドからのリストアを行うなど作業した結果です。この部分は、ざっくりと考えると
「必要なバックアップデータを全てクラウドから NAS にリストアすると 100ドル以上かかる」
ってことでしょうか。
それは詳しくは後で触れるとして、保管しておくだけのコストとしては 1-3月や 7-12月を見れば傾向がわかります(ほとんどフラット)。

旧 Glacier と Glacier Deep Archive の月毎の比較をする

保管だけ、と言っても 1-3月が旧 Glacier、7月以降が新 Glacier (Deep Archive) を使ったコストとなります。

f:id:KuriKumaChan:20220122181546p:plain
2021/01-03
1-3月は 毎月 $6.97 支払っていました。
f:id:KuriKumaChan:20220122181859p:plain
9月以降が安定状態
8月にコストが増えているのは、この月からバックアップ対象データを増やしたからだと思います。一旦増やした後に見直して余分なものを減らしたのかな。9月以降が現状で毎月 $2.36 と保管データ対象を増やしたのにコストが半分以下になりました。これは旧 Glacier に比べて Glacier Deep Archive が安くなったことと、旧の時代には使わないバックアップの残骸が残っていたことも影響しています。
とはいえ、今でも 2TB 以上のデータを預けてあるので、毎月 300円くらいで安心が得られるのですから安いものです。

日毎のコスト変化をみる意味はあるか?

AWS コンソールでは日毎のコストも確認することができます。

f:id:KuriKumaChan:20220122184418p:plain
毎月1日が飛び出ているのは税金
実際の運用としては、NAS 側で毎週差分を新たに Glacier にバックアップしていますのでストレージコストは微妙に増えているはずですが、後ほど確認するリストア時のような「データ追加操作に伴うコスト」自体はそもそも設定されていないので(?多分)、リストアを行わない限り日別のコストをチェックする意味はほとんど無さそうです。グラフで毎月1日が飛び出ているのは税金が計算されて1日に乗せられていること、11/06 だけ少し飛び出ているのは "PutObject" が $0.02 発生しています。なんだろ?

データ取り出しコスト(リストア時に発生)

普段預けておくだけならばほとんどコストのかからない Glacier ですが、データをダウンロードしようとすると結構なお金がかかります。上で説明したように 4,5,6 月は旧 Glacier も含めて何回もリストアしており、単純に一回だけリストアする以上のコストがかさんでいます。当時何をやったのかジョブログを見ても結構錯綜していた自分が思い出されてブルーになってきてしまうし、旧 Glacier の作業コストを確認しても仕方ないので、06/03 におこなあった Glacier Deep Archive からのリストアジョブとコストを比較してみようと思います。

f:id:KuriKumaChan:20220122185915p:plain
06/03 は $27.86

AWS 側では私の知る限りコストは記録されていますが扱ったデータ量を一覧表示するような機能はないと思います。しかしそのコストを API オペレーション毎に分割表示できます。

f:id:KuriKumaChan:20220122190105p:plain
API オペレーション別

一方 QNAP NAS に残っている joblog からはデータ量も分かります。

job date job 合計ファイルサイズ 転送されたサイズ 備考
06/03 Restore 6 375.61GB 273.98GB 特定のディレクトリのみ指定してリストア
06/03 Restore 5 832.95GB 21.49GB 特定のディレクトリのみ指定してリストア

表の中の「合計ファイルサイズ」と「転送されたサイズ」は joblog からの転記です。

f:id:KuriKumaChan:20220122172344p:plain
ざっくり 06/03 実行ジョブからコスト計算

だいたい、QNAP joblog に残っている「合計ファイルサイズ」が "RequestObject" API で扱われたデータ量、「転送されたサイズ」が ”GetObject” API で扱われたデータ量と考えて良さそうです(超ザックリですが)。
AWS の料金表だと今ひとつ実感が伴いませんが、こうしてみるとコストの大半は ”GetObject” でリストアのためにダウンロードされたデータ量が大半を占めると考えて良さそうです。

AWS コンソールでは日毎、API 毎のコストが確認できます。CSV でダウンロードできるのでより詳細な分析も可能ですが、いつか気合が入ったらテストデータをバックアップ/リストアしてテストしてみたいとは思います。

結局のコスト感は

これまたザックリですが、

  • クラウド側に預けておくコストはなんだかんだで 2TB 置いておいて 300円/月
  • クラウドから 1TB リストアする には 10,000円/回

くらいと考えておけば良さそうです。
と言うことで、毎月のコストはほとんど忘れて良いくらいで、2年に一度くらいは 10,000円くらいは授業料として払って restore の訓練でもやっておけば安心かな、と言うのが結論でした。