こんにちは。かっぺいです。
ローカルPCやカメラやスマホの写真・ビデオのバックアップとして、AWSのS3を使う場合のメモです。
今では、DropBoxやGoogleDriveなどのストレージファイルのクラウドサービスが存在しますが、ビデオデータのような大きなデータを扱う場合、当分使う用途のないいわゆるバックアップとしてはS3も使い道があるのではないかと思います。
S3のメリット
S3はバケット使いたいリージョンで作成したら、ファイルのアップロード・ダウンロードが自由に行えるようになります。
作成したバケットに容量制限なく、マネージメントコンソールから簡単に使うことができます。
ただし、DropBoxなどのストレージサービスと違い、オブジェクトストレージサービスです。
簡単に言うと、ローカルのファイルシステムのタイムスタンプなどが保持されないなどの制約があります。
また、容量制限はありませんが、使えば使った分だけの料金が発生します。
オリジナルのタイムスタンプを保持したい場合
Zipで圧縮すると圧縮元のファイルはオリジナルのタイムスタンプを保持することができます。
S3の場合、アップロードされているファイルのサムネイルをマネージメントコンソールから確認する方法はありません。そのため、あらかじめ圧縮したファイルを格納することにデメリットはありません。
ファイルの圧縮
S3は容量で料金が決定します。圧縮が効くファイルは事前に圧縮してからアップロードすることをお勧めします。
また、S3ではローカルのタイムスタンプが消滅しますが、zip圧縮すれば圧縮したファイルはタイムスタンプが維持されます。
この記事内容に直接関係ありませんが、S3をデータレイクとする場合にはCSVファイルをgzip圧縮してもデータ参照可能かつアクセスの効率化になるため、アップロードする前に圧縮することをお勧めします。
ストレージクラス
普通にS3にアップロードすると、ストレージクラスはスタンダードになります。これは、S3の売りである3個以上の複数ゾーンにファイルを配置し高い冗長化を取るモードになります。
バックアップ的な用途の場合、データアクセス頻度が少ないのが普通なので、データアクセス頻度を下げることを前提とした標準IAを選ぶことにより、より低価格なストレージコストを選ぶこともできます。
さらに、冗長化を一つのゾーンに絞る1ゾーンIAを選ぶことにより、より低価格なストレージコストを選ぶこともできます。
さらに低頻度アクセス(1年に1回アクセスがあるかどうか)の場合には、Glacierタイプを選ぶこともできます。
こちらは、オンプレ環境でのテープドライブと同じような扱いという想定しているようで、ファイルを取得したい時にはダウンロードの転送レートに制限がかかりますので、通常は利用しないバックアップの時に利用することになるかと思います。
Glacierを使うバックアップ用途の場合、最新バックアップは最悪の場合にはすぐに利用する可能性があるので、最初はスタンダードに入れて、時間の経過とともにストレージクラスを下げていき、コストの低減を図っていくのが一般的な利用方法になるかと思います。
S3を使う上での注意点
S3にアップロードする場合は、通信トラフィックに対する料金は発生しません。
AWS内(同じリージョンに限る)での、S3からのダウンロードにも料金は発生しません。
そのため、AWS内で完結するバックアップ用途の場合にはトラフィック料金は意識する必要はありません。
しかし、ローカルPCへダウンロードする場合には通信トラフィックとして料金が課金されます。
ビデオデータなど大容量サイズのファイルを取得する場合、トラフィック料金が多大となる可能性があるので、注意が必要です。
S3からトラフィック料金を抑えてローカルに取得
AWS内での料金が発生しない特性を利用して、EC2インスタンスからWorkDocsを経由してファイルを取得する方法があります。
WorkDocsでは、ディレクトリサービスを使う必要があるため、AWSのSimple ADを使ったとしても最低で$60程度必要となります。
単純計算で、トラフィック料金が$100を超えるような場合には、WorkDocsを利用した方がお得となる可能性があります。