Amazon Glacierについて(２回目)

こんにちは、株式会社D2C 技術開発部の園部です。

Amazon Glacier ２回目の投稿は、前回の記事[「Amazon Glacierについて」](http://qiita.com/d-tech/items/ddbf83b85246d231d6c9 "Amazon Glacierについて")にて告知しました、Amazon S3経由でGlacierを有効活用する方法についてご紹介します。

#S3からGlacierへ自動バックアップ機能を使ってみた
S3のライフサイクルルールを設定し、「S3上のファイルをXX日経過後にGlacierへ移動させる」というような自動バックアップ機能を実際に使ってみました。

ライフサイクルについては下記を参照（「知ってるよ！」という方はスキップしてください。）
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/object-lifecycle-mgmt.html

##設定

テスト用S3バケット名：tech-aws-test
テスト用ファイル名：dummy.file

①まずはテスト用S3バケットを作成します。
作成したバケットのプロパティからライフサイクルの項目を表示し「ルールの追加」をクリックします。
![設定_001.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/204eb2d9-39b1-94ed-a66a-387fbd372b30.jpeg)


②ダイアログからライフサイクルルールを設定していきます。
今回はパケット全体にルールを設定するため「バケット全体」を選択します。
「ルールの設定」をクリックし次のステップへ進みます。
※S3バケット内のフォルダにルールを設定する場合は「プレフィックス」を選択します。
![設定_002.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/6ad2eb1b-bef6-9786-f05f-48f3ed094e30.jpeg)


③「Glacierストレージクラスタへのアーカイブ」にチェックを入れ、S3にアップしたファイルを何日後に移動するかを設定します。
今回は最小値である1日後で設定します。「確認」をクリックし次のステップへ進みます。
※「完全に削除」をチェックすれば、指定した日数後にファイルを自動削除することができます。「Glacierストレージクラスタへのアーカイブ」と組み合わせれば、「〇〇日経過後にS３上のファイルをGlacierへ移動し、××日経過後に自動削除する」といったよりコストを抑えた設定が可能です。
![設定_003.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/7b4ee29d-92cd-e6f0-0379-f8cf2162b29d.jpeg)


④ルール名を入力し、「ルールの作成と有効化」をクリックします。
![設定_004.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/30620fed-a5e8-b0b1-2791-e295e2d010af.jpeg)

⑤S3のプロパティからライフサイクルの項目を表示し、ライフサイクルルールが作成され有効になっていることを確認します。
※チェックボックスにチェックがついているとそのライフサイクルルールが有効という意味です。
![設定_005.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/497d6d7e-47db-e3f4-f1a8-4e7d21ea2edd.jpeg)

##ファイルのアップロード
設定したS3バケットにGlacierへ移行用のテストファイルをアップロードします。
アップロード完了時点ではストレージクラスは「スタンダード」と表示されますが、
1日以上経過すると「Glacier」に変化します。
![fileUL.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/6a16c3a7-3188-a8f4-1828-978123423a20.jpeg)


##ファイルのダウンロード
「Glacier」の状態で普通にファイルをダウンロードしようとすると下記のようにエラーとなります。
![fileDL.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/422fe132-3fdb-788d-a5e7-7fdf9ef28371.jpeg)

ファイルをダウンロードするには、下記の事前申請が必要となります。

①テストファイルにチェックを入れ、アクションから「復元の開始」をクリックします。
![fileDL_001.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/99671eed-4e5f-e5cf-9466-fcc9375edf84.jpeg)

②ダイアログからダウンロード可能な期間を指定します。今回は7日間で設定します。
「OK」をクリックすれば、ダウンロード申請完了です。
![fileDL_002.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/2bb0e2ab-ba84-2b03-5bed-7fc01e0ca4c0.jpeg)

③3～5時間後にダウンロード可能な状態となるまで待機します。
テストファイルのプロパティの詳細項目の表示が「GMTまで復元されました」と表示されるとダウンロード可能になります。
![fileDL_003.jpeg](https://qiita-image-store.s3.amazonaws.com/0/111999/1a3baa21-9096-47e7-d2b9-ead02193e889.jpeg)

#まとめ
S3経由でGlacierを利用する場合「Glacier」は格納したファイルの状態を表している。
・スタンダード　⇒即時ダウンロード可能だが料金は高い。
・Glacier　　　⇒ダウンロードの申請後3～5時間かかるがその分、料金は安い。

#（注意点）データ復元料金について　

Amazon S3のよくある質問（http://aws.amazon.com/jp/s3/faqs/ ）
にも記載がありますが、Glacierから無料で取り出せるデータ量が決まっています。

`無料で復元できるのは、1 か月当たり、お客様の月平均アーカイブ量の 5% まで（1 日ごとに案分）です。`

つまり、75TBのデータをGlaicerへ保管されている場合は
`75TB × 5% ÷ 30日 = 125GB/日`
1 日当たり無料復元上限は 125 GBとなります。

復元料金については「ピーク復元レート」に基づいて計算されます。

ピーク復元レートとは、
どのくらいのサイズのデータを何時間で復元したかの割合のことです。
つまり、75 TB のデータから、140 GB を 4 時間で復元する場合は
`140GB ÷ 4時間 = 35 GB/時間`

ピーク復元レートは35 GB/時間となります。

140 GB を 4 時間で復元する場合の１時間あたりの無料復元上限を計算します。
125 GB ÷ 4時間 = 32GB/時間`

１時間あたりの無料復元上限は32GB/時間となります。

請求可能なピーク復元レートを計算します。
35 GB/時間 - 32GB/時間 = 3GB/時間

`1 か月の支払い額を計算するには、請求可能なピーク復元レート（3 GB/時間）と復元料金（0.01 USD/GB）と 1 か月の時間数（720 時間）を掛けます。`

ピンとこないので、復元料金の計算方法について記載します。

`3GB × 24時間 × 30日 × 0.0114ドル/GB ＝ 2955円`
※1USD=120円

計算式が長くなってしまいましたが、
75TBのデータから140GBを4時間で復元した場合の復元料金はおおよそ2955円となります。

**「Glacierから大量のデータを短時間でダウンロードする際には注意が必要！」**ということがわかりますね。

とはいえ、計算方法をしっかりと把握していればGlacierは大変魅力的なサービスです。
ご利用の際は計画的に！