【AWS】AWS のコスト節約を考える ~ S3編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2017/07/26/115400
https://dk521123.hatenablog.com/entry/2017/12/07/223753

の続き。
今回は、S3でのコスト節約を考える。

普通のシステムを扱う場合、S3のコストはあんまり考えたことがなかったが、
ビッグデータを扱う場合、結構、とんでもないことなるので。

目次

【1】S3 の料金体系
【2】S3 の ストレージタイプ
【3】コスト節約案

【1】S3 の料金体系

* まずは、何でお金を取られるかを知る。
* 以下が分かりやすい(公式サイトは分かりづらい)

https://qiita.com/kawaz/items/07d67a851fd49c1c183e
公式サイト:料金表
https://aws.amazon.com/jp/s3/pricing/

課金されるポイント

https://dk521123.hatenablog.com/entry/2017/03/06/212734

より抜粋
~~~~~
1)データ格納容量
2)データ転送量(OUTのみ)
3)APIリクエスト数
~~~~~

※ 結局、「1)データ格納容量」の扱いをどうするかが、ポイントになりそう

1)データ格納容量

* ファイルの保存容量

2)データ転送量(OUTのみ)

* S3への受信(アップロード)は、無料
* S3からの送信に料金がかかる
=> ただし、同一リージョン内のAWSサービスとの通信は、無料

3)APIリクエスト数

* GET:低価格
* PUT/POST/LIST/COPY:高め
* DELETE:無料

【2】S3 の ストレージタイプ

* S3 には、ストレージタイプ があり、価格も異なる
~~~~~
1)S3 標準
2)S3 標準 – IA
3)S3 Intelligent-Tiering (S3 INT)
4)S3 1 ゾーン – IA
5)S3 Glacier / S3 Glacier Deep Archive
~~~~~

※ IA (Infrequent Access)

* Infrequent Access = 低頻度アクセス (Infrequent : まれに)
* 割安になる代わりに、「最小ストレージ期間 30 日」という制約がある
 => 途中で削除しても、30日分料金は取られる

公式サイト
https://aws.amazon.com/jp/s3/storage-classes/
その他一般サイト
https://qiita.com/s-katsumata/items/927e57834ca5256c4eee
https://techblog.forgevision.com/entry/2019/02/27/094449
https://dev83.com/aws-s3/

1)S3 標準

* デフォルト ストレージ

2)S3 標準 – IA

* 標準ストレージよりも安価になる
* ただし、リクエストに対する料金は、標準ストレージよりも高くなる

https://aws.amazon.com/jp/s3/pricing/?nc=sn&loc=4
想定用途

* バックアップ

3)S3 Intelligent-Tiering (S3 INT)

* 30日間アクセスがない場合、低頻度のアクセス階層に移動
* アクセスがあった場合、自動的に高頻度のアクセス階層に移動

想定用途

* アクセスパターンが未知または予測不能で、
 長期間使用するデータ

4)S3 1 ゾーン – IA

* 「2)S3 標準 – IA」よりも、コスト 20% 削減

デメリット(っというより制限)

* ひとつの アベイラビリティーゾーン(AZ) にデータを保存する
 => 他のストレージタイプは、3つのAZで保存

想定用途

* 再作成可能でアクセス頻度の低いデータ

5)S3 Glacier

* 上記のS3より更に安価
* 詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/10/01/230953
デメリット(っというより制限)

* データの取出しに時間がかかる
* 最低保存期間がある

想定用途

* 長期アーカイブ
 => めったに取り出すことのないデータ(監査ログなど)

【3】コスト節約案

1)ファイルの整理
2)S3ストレージタイプを適切に適用する
etc...

1)ファイルの整理

* 古典的な方法かもしれないが...
* 例えば、以下を行う。
~~~~~~
 A)不要なファイル削除
 B)あまりアクセスしないファイルを圧縮して小さくする
 etc...
~~~~~~

圧縮について

圧縮率を比較したサイトは、以下。

https://forest.watch.impress.co.jp/article/1998/11/16/compress.html
http://www.emit.jp/gca/cmptest.html
http://www.emit.jp/dgca/cmptest.html
注意点

* 上記のサイトの中で、lzh形式の圧縮率が優秀だが、
 すでに開発が終了しており、使用は控えるように勧告されているっぽい

https://ja.wikipedia.org/wiki/LHA

* 圧縮形式は、圧縮対象ファイルにより、選定した方がいい
 => テキスト or 画像 etc...。ファイルサイズはおよそどの位なのか 等
 => 圧縮対象ファイルが巨大だと、圧縮形式により、色々とトラブルがありそう 

https://cho-inn.com/2015/09/zip-limit-size/
https://www.ponsoftware.com/archiver/help/OVER_4GB.htm

2)S3ストレージタイプを適切に適用する

* 各ストレージタイプの特徴を理解した上で、S3上にあるファイル群に対して
 適用する
* 以下の公式サイトでは、「Amazon S3 Intelligent-Tieringを有効にする」

https://aws.amazon.com/jp/blogs/news/9ways-to-optimize-aws-cost/
https://www.ntt-tx.co.jp/column/tec/cloud_v11n/191001/

参考文献

公式サイト
https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-reduce-costs/
その他一般サイト
https://dev.classmethod.jp/articles/reinvent-2019-report-stg240/
https://www.ragate.co.jp/blog/articles/1529

関連記事

運用中、気を付けること
https://dk521123.hatenablog.com/entry/2017/05/10/235544
AWS のコスト節約を考える ~ EC2編 / リザーブド・スポットインスタンス etc ~
https://dk521123.hatenablog.com/entry/2017/07/26/115400
AWS のコスト節約を考える ~ EC2編 / 業務外でのEC2停止 ~
https://dk521123.hatenablog.com/entry/2017/12/07/223753

S3関連

Amazon S3 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2017/03/06/212734
Amazon S3 ~ S3 Glacier / S3 Glacier Deep Archive ~
https://dk521123.hatenablog.com/entry/2020/10/01/230953
Amazon S3 ~ バージョニング編 ~
https://dk521123.hatenablog.com/entry/2017/04/03/235355
Amazon S3AWS CLIでS3を操作する ~
https://dk521123.hatenablog.com/entry/2017/04/01/235355
Amazon S3Python boto3でS3を操作する ~
https://dk521123.hatenablog.com/entry/2019/10/21/230004