AWSのコスト削減　EBSのボリュームタイプを見直してコスト最適化を実現する

# はじめに
本記事はAWSのコスト削減の一環として、EBSのボリュームタイプについて記載しています。

EBSのボリュームタイプを見直すことで、20%[^1]のコスト削減が実現できます。
数字だけ見ると低いように感じるかもしれませんが、年間で見た場合は、何十万円以上に相当するコストを削減できる場合もあります。

真新しい話ではありませんが、そもそも情報を知らない人もたくさんいると思うため、AWSのコスト削減を考えている方のご参考になれば幸いです。

[^1]: 公式ドキュメントの[Amazon EBS の特徴](https://aws.amazon.com/jp/ebs/features/)を参照

## EBSのボリュームタイプを見直す理由
EBSのボリュームタイプを見直す理由は以下の通りです。

- 既存のgp2ボリュームよりもGBあたり最大20%のコストを節約
- 任意のボリュームサイズで3,000IOPSおよび125MB/秒のベースラインパフォーマンスを提供

従って理由がない限りgp2のボリュームタイプを使い続ける理由はありません。
今すぐに変更することができなくても、まずは計画を立てましょう。

EBSのボリュームタイプ見直しに関して、注意すべきことは公式ドキュメントの[ボリューム変更時の要件](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/modify-volume-requirements.html)の制限事項をご参照ください。

## EBSのボリュームタイプを見積る方法
公式ドキュメントの[汎用 SSD ボリューム](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/general-purpose.html)から以下のツールがダウンロードできます。（※リンク押すとファイルのダウンロードが開始されます）

- [Amazon EBS gp2 から gp3 への移行で削減できるコストの計算ツール](https://d1.awsstatic.com/product-marketing/Storage/EBS/gp2_gp3_CostOptimizer.dd5eac2187ef7678f4922fcc3d96982992964ba5.xlsx)

使い方は簡単です。
エクセルやスプレッドシートなどでダウンロードしたファイルを開き、D12のセルに対象とするgp2ボリュームの容量を入力するのみです。

gp2ボリュームではIOPSまたはスループットを個別にプロビジョニングできないため、gp2ボリュームのベースラインIOPSとスループットは、gp2 ボリュームのサイズに応じて自動的に計算されます。
また、gp3ボリュームとコスト削減が自動的に計算されます。（表2）

![スクリーンショット 2023-09-05 20.37.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/5625b399-7997-0dcd-5931-498b2a75006d.png)

::: note
gp2とgp3の違いについては、公式ドキュメントの[アマゾン EBS のボリュームタイプ gp2 と gp3 の比較](https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-plan-storage-compare-volume-types.html)から比較できます。
:::

## EBSのボリュームタイプ変更方法
EBSに関連するEC2と起動テンプレートを例に解説します。

### EC2
基本的に最新世代のEC2インタンスであれば、無停止で変更することができます。

なお、公式ドキュメントの[ボリューム変更時の要件](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/modify-volume-requirements.html)から以下制限事項に該当する場合はご注意ください。

>ボリュームが 2016 年 11 月 3 日 23:40 (UTC) 以前にアタッチされていた場合は、Elastic Volumes サポートを初期化する必要があります。詳細については、Elastic Volumes サポートの初期化を参照してください。

#### ボリュームタイプの変更手順
以下にコンソールから行う場合の手順について記載しています。

はじめに、変更するボリュームを選択した状態で「ボリュームの変更」を押します。

![スクリーンショット 2023-08-31 20.55.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/c718c1f9-4de9-5b51-e471-21e88b38ea33.png)

ボリュームタイプから「汎用 SSD(gp3)」を選択します。

![スクリーンショット 2023-08-31 20.55.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/79c0a907-3beb-6e75-c790-3c3b6f121996.png)

設定値を確認して「変更」を押します。

![スクリーンショット 2023-08-31 20.55.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/f967487e-a31e-3510-cbfa-da73d08e7177.png)

ポップアップが表示されるので「変更」を押します。

![スクリーンショット 2023-08-31 20.55.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/45cfac8c-9290-6887-2811-800e27607984.png)

ボリュームの変更がリクエストされます。

![スクリーンショット 2023-08-31 20.56.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/bf4e3a12-16dc-d30a-c087-bef29125993a.png)

しらばらくすると、ボリュームタイプがgp3に変更されたことが確認できます。

![スクリーンショット 2023-08-31 20.56.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/59cd3a00-3984-9ebf-eae8-d10c56af0202.png)

::: note
ボリュームタイプを変更後、ボリュームの状態が`optimizing (0%)`と表示されます。
進行状況の詳細については、公式ドキュメントの[ボリューム変更の進行状況のモニタリング](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/monitoring-volume-modifications.html)をご参照ください。
:::

#### リカバリー手順
ロールバックを行うことがある場合は、事前にスナップショットを取得することを推奨します。

以下にスナップショットを用いたリカバリー手順を記載します。

1. 取得したスナップショットからボリュームを作成する
1. インスタンスを停止する
1. ボリュームをデタッチする
1. スナップショットから作成したボリュームをアタッチする※デバイスファイル名（例：/dev/xvdaなど）がズレないようにすること
1. インスタンスを起動する

### 起動テンプレート
EC2については、EC2インスタンスのコンソール画面からボリュームタイプを設定する場合、IOPSとスループットが自動的に計算されるようになりました。

しかし、オートスケールなどを利用している環境で起動テンプレートからストレージに関する値を変更する場合は、自動的に計算されないため、スループットが最小の125になります。

従って起動テンプレートを変更する場合は、必要に応じてスループットに対する考慮が必要です。

## 注意事項
ルートボリューム用のEBSボリュームのデフォルトとして選択されるタイプは、AMIによって変わります。

例えばAmazon Linux 2023の場合は、デフォルトでgp3が選択されます。

- Amazon Linux 2023 AMI 2023.1.20230825.0 x86_64 HVM kernel-6.1

![スクリーンショット 2023-08-31 20.46.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/32d06d9b-b460-ab88-3441-39b1a6030c59.png)

Amazon Linux 2を利用する場合は、デフォルトでgp2が指定されるため、ご注意ください。 

- Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type

![スクリーンショット 2023-08-31 20.47.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/9c571a71-52de-e785-32dd-697a70570882.png)

## おわりに
今年も円安が続いているため、クラウドを利用するにあたってコスト削減の重要性は高まっています。

本記事ではEBSのボリュームタイプ見直しについて触れましたが、合わせて使用していないスナップショットなども削除することで、無駄なコストが減らせます。

以上です。