【AWS】S3のストレージクラスを変更してコストカットする

## はじめに
AWSのS3のストレージクラスはデフォルトではスタンダードが使用されています。ストレージクラスを変更することでコスト削減が期待できるため、今回はその変更について説明します。

## S3 ストレージクラスとは
データの保管場所をリビングの棚にするか、外の倉庫の奥にするかで取り出しやすさとコストが変わりますよってやつです。

データのアクセス頻度やユースケースに応じてコストを最適化するためのものです。アクセス頻度が高いデータは高速に返すことができ、アクセス頻度が低いデータはアーカイブして取り出しに時間がかかりますが保管料を抑えることができます。


## Intellijent Tiering(インテリジェントティアリング)
ほんの少しの管理料金を払うことで、殆ど使わないデータを外の倉庫にしまってくれてコストを下げられるサービスです。しかも取り出し時間はスタンダード(ミリ秒)と変わらずに利用できます。使う頻度が高くなったらリビングの棚に戻してくれます。

https://aws.amazon.com/jp/s3/storage-classes/intelligent-tiering/

## 結論
先に結論からお話します。
**S3内の8割以上のオブジェクトが頻繁な(30日以内に1回以上の)アクセスがされていなければIntellijent Tieringを導入するべき**です。

## 変更方法
変更方法はいくつかあります。
AWSのコンソールで行う方法とオブジェクトのライフサイクルを設定して行う方法、AWS CLIを使用する方法などがあります。

今回はシンプルなAWSのコンソールから変更する方法を紹介します。
1. S3のオブジェクトを選択して「ストレージクラスを編集する」を押下します
![スクリーンショット 2024-05-17 13.03.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/0e762e0e-8b4e-585d-2b11-3980245b03fa.png)

2. ストレージクラスを変更します
![スクリーンショット 2024-05-17 13.05.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/719cd279-c65e-57db-402a-9dc706bcb38b.png)

3. 変更を保存して完了です！
![スクリーンショット 2024-05-17 13.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/1ecc62f0-21c7-e2c1-9ebe-8c49ab4f3cde.png)


## 料金
料金は従量課金の月額制です。
| S3スタンダード 汎用ストレージ | 料金 |
| ----------------------------------------------------------- | ---- |
| 最初の 50 TB                                             | 0.025 USD / GB |
| 次の 450 TB                                              | 0.024 USD / GB |
| 500 TB 以上                                                  | 0.023 USD / GB |

| S3 Intelligent Tiering  | 料金 |
| ------------------------------------------------------------ | ---- |
| モニタリング/月 (オブジェクト > 128 KB) | オブジェクト 1,000 件あたり 0.0025 USD |
| 高頻度アクセスティア、最初の 50 TB                      | 0.025 USD / GB |
| 高頻度アクセスティア、次の 450 TB                         | 0.024 USD / GB |
| 高頻度アクセスティア、500 TB 以上                      | 0.023 USD / GB |
| 低頻度アクセスティア、すべてのストレージ                  | 0.0138 USD / GB |
| アーカイブインスタントアクセスティア   | 0.005 USD/GB |

30日間連続してアクセスされなかったオブジェクトを低頻度アクセス階層に移動、90 日間アクセスがなければ、アーカイブインスタントアクセス階層に移動する仕組みです。

高頻度アクセスティアはスタンダードと同じ料金なのでS3内のオブジェクトが全て頻繁に使用されるようなケースではコストカットが見込めません。モニタリング料がかかるためです。


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


## 損益分岐点
スタンダードクラスと比較した時にIntelligent Tieringがお得になるケースはどこからなのかグラフで見てみます。

### アーカイブインスタントアクセスティア
**前提条件**
・　1オブジェクト：1MB
・　縦軸：月額料金
・　横軸：アーカイブインスタントアクセスティアの割合
・　東京リージョンの料金体系

**オブジェクト数：100万**
![100万個.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/91953040-9938-dba4-4b73-4861424ff2f1.png)

**オブジェクト数：1億**
![スクリーンショット 2024-05-17 7.40.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/1a7e376e-3de8-3e03-c0e5-22b67800d841.png)

### 結果 (アーカイブインスタントアクセスティア)
オブジェクト数にかかわらず**13％以上**のオブジェクトがアーカイブインスタントアクセスティアに保存されればS3スタンダードよりもコストを下げられてお得です！

### 低頻度アクセスティア
**前提条件**
・　1オブジェクト：1MB
・　縦軸：月額料金
・　横軸：低頻度アクセスティアの割合
・　東京リージョンの料金体系

**オブジェクト数：1億**
![スクリーンショット 2024-05-17 8.21.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/884152e7-4035-ced9-3875-79668049deab.png)

### 結果 (低頻度アクセスティア)
**23％以上**のオブジェクトが低頻度アクセスティアに保存されればS3スタンダードよりもコストを下げられてお得です！

## 注意点
- 移行に料金がかかる
    - 東京リージョンの場合 1,000オブジェクト/ 0.0047ドル
    - １億オブジェクトで470ドル
- 導入開始時は総額料金が上がる
    - 下記２つの料金が発生するため導入開始から2~3ヶ月は総額の費用が上がります
        - 移行リクエストの費用
        - モニタリング料金
- 移行に時間がかかる
    - 2万オブジェクト(14GB)で約4分 (サイズによる？)
    - 移行中はオブジェクトにアクセスできる
- Intelligent Tieringは128 KB以下のオブジェクトには適応されない
    - ただしストレージクラスを変更してもモニタリング料はかからない

## まとめ
AWSもただ利益のためだけでなく、費用も管理コストもユーザーに優しいサービスを提供しているのだなと感じました。

コストは極論オブジェクトを削除すれば費用はかからないので、色々な手段を検討しながらコストカットしていきたいです。

## 最後に
私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください！

https://jambo-support.com/recruit_engineer/