Tech Sketch Bucket of Technical Chips by TIS Inc.

AWS Tips -- S3のデータに保存期間を設定して自動でGlacierに移動する --

Pocket

この記事はeXcale Developer's Blogから移転されたものです。


eXcale開発チームの泉谷(@syguer)です。
今回は、Amazon S3のデータを自動でAmazon Glacierに移動する方法を紹介します。
eXcaleでは様々なところでS3を利用しています。
中でもログの保管に大容量を利用していますが、毎日数十GBのログが吐かれているため、低価格なAmazon S3と言えどコストがかさんで来ます。
そこで、ログに保存期間を設けて自動でAmazon Glacierに移動するようにしてコストを押さえています。
本記事ではその設定方法について紹介します。

S3とGlacier

Amazon S3(以下S3)はAmazon Web Services(以下AWS)が提供するサービスでも最も古くからあるもので、低価格で利用できるストレージサービスです。
スケーラブルで容量という概念がなく、料金は使った分しかかかりません。

S3の料金

最初の1TB/月 $0.0330 /GB
次の49TB/月 $0.0324 /GB
次の450TB/月 $0.0319 /GB

※アジアパシフィック(東京)リージョンの場合(2014年4月23日現在)
※これとは別に通信時のトラフィック、各リクエストも課金されます。詳細はこちら

対してAmazon Glacier(以下、Glacier)は2012年8月に提供開始されたサービスで、バックアップやアーカイブに焦点を当てたストレージサービスです。
データの取り出しに数時間かかるということと引き換えに、S3よりも低コストでデータを保存できます。

Glacierの料金

$0.0114 /GB

※アジアパシフィック(東京)リージョンの場合(2014年4月23日現在)
※これとは別に通信時のトラフィック、各リクエストも課金されます。詳細はこちら

eXcaleでは直近のデータはS3、古いデータや保管だけが目的のデータはGlacierに保存するようにしています。
このようにすることでS3とGlacierの特性を活かし、コストを押さえることができています。
しかし、古いデータと言っても、誰かが古いデータを定期運用でGlacierへ移していたのでは身が持ちません。
そこで、S3にある古いデータを自動でGlacierへ移動する方法が必要になります。


自動でGlacierに移動する設定を入れる手順

設定はAWS Management Consoleから行います。
設定はバケット単位で行います。

S3の管理画面からバケットのProperties -> Lifecycleを開き、Add ruleを選択します。

Apply to Entire Bucketにチェックを入れ、Move to Glacierをクリックし、Time Periodを指定します。

以上で設定は完了です。
なお、設定した日数より古いデータは順次Glacierへ送られます。

Glacierに送られたデータは見かけはS3にあるときと変化がありませんが、下図のようにStrage ClassがGlacierになっていればGlacierへ送られています。

Lifecycleを設定すると、S3が日次でデータを確認し、対象があればGlacierに送ります。
また、今回の例では設定していませんが、expirationを設定するとGlacierへの移動だけでなく、データを削除する期限も設定できます。
S3に入れてから1ヶ月経ったデータはGlacierへ、更に1ヶ月経ったデータは削除というような使い方ができます。


データをS3に戻す方法

データをS3に戻す際は下図のようにオブジェクトのメニューからInitiate Restoreを選択します。

ダイアログが表示されるので、どれくらいの期間リストアするかを指定します。

PropertiesのDetailsを見てRestoration in progressと表示されていればリストアが開始されています。

リストアには3〜5時間かかります。
リストアを頻繁に行わないように(できればしなくて済むように)、S3からGlacierへのデータの移動は適切な期限を設定するようにしてください。


最後に

今回は、S3のデータを自動でGlacierに移動する方法を紹介しました。
保存する対象のデータを見定め、コスト削減に役立ててください!

エンジニア採用中!私たちと一緒に働いてみませんか?