はじめに
本記事は、S3のデータをS3 Glacier(以下Glacier)へ移行する際のポイントについて、料金面からまとめたものになります。
リクエスト料金
S3 Glacier(以下Glacier)のストレージ料金は全クラスで一番安いですが、一方でCRUDなどのリクエスト料金は一番高いです。何も考えずに全てのS3データをGlacierに移行すると、移行料金だけで数百万かかる可能性もあります。
執筆時点でのGlacierアップロード料金は、0.065USD/1000回
ですので、例えば100万件のオブジェクトを移行する場合、ちょうど100万円ほどの費用となる見込みです。
これほどの移行費用となると、オブジェクトサイズにもよりますが、ストレージ料金による費用削減が移行費用を上回るまでに数年かかる可能性もあり、慎重にならざるを得なくなります。(オブジェクトの取り出しにも料金がかかるので尚更)
そこで、AWS公式ではGlaicerへの移行の際には、複数データをZIPなどにまとめてからアップロードすることを推奨しています。今回、私がアーカイブに取り組むにあたっても、ZIP圧縮専用のLambda関数を用意して、1000件ごとにまとめてGlacierにアップロードするという戦略を採用しました。
ネットワーク料金
S3とデータをやり取りする際に、データ量に応じて料金がかかりますが、これはルートによって異なります。ちなみに単にストレージクラスを変更するだけであれば、この料金は発生しません。今回のようにオブジェクトを圧縮するため、一度S3からデータを取り出さなければならない場合などに、考慮する必要があります。
方法の一つは、パブリックサブネット内に設置したEC2やLambdaなどのインスタンスから、インターネットゲートウェイを通じてS3にアクセスする方法です。この方法では、同一リージョンの場合に限り無料となります。
ですが、要件によってはインスタンスをプライベートサブネットに設置したいかもしれません。その場合、インターネット接続のためにはNAT Gatewayを使用する必要があります。執筆現在、NAT Gatewayの料金は0.062USD / 1GB
なので、1TBあたり1万円ほどかかる見込みとなります。データ量によってはかなりの料金となるかもしれません。
NAT Gatewayの代わりとして、Gateway Endpointというオプションもあります。これはS3とDynamoDB限定ですが、利用料が無料ですので、理由がない限りはこれを設置するのが一番良いと思います。
参考