
【第4回】個人向け!貧乏エンジニアのAWS節約術 ─ EC2インスタンス編
クラウドが普及した昨今、勉強のため、スキルアップのため、クラウドを実際に触って色々と検証をしているITエンジニアの方も多いのではないでしょうか。
すぐに始めることができ、様々なサービスを試すことができるのはクラウドの利点です。しかし、複雑な料金体系や使ったリソースを放置して想定外の利用料を請求されたという方もいらっしゃると思います。
この記事は、個人のITエンジニアの方を対象に、クラウド利用量の節約術について、何回か回数を分けて紹介していきます。
今回はその第4回ということで、より実践的なコスト削減策として、Amazon EC2インスタンスタイプの選定および変更によるコスト節約術を解説します。コスパよくクラウドを利用したい方は、ぜひ参考にしてください。
関連記事
- 【第1回】個人向け!貧乏エンジニアのAWS節約術 ─ クラウド導入編
- 【第2回】個人向け!貧乏エンジニアのAWS節約術 ─ AWS Cost Explorer編
- 【第3回】個人向け!貧乏エンジニアのAWS節約術 ─ EBSボリューム編
Amazon EC2インスタンスのおさらい
Amazon EC2は、仮想サーバ機能を提供するAWSのサービスです。Amazon EC2インスタンスは、メインとなる仮想サーバに関するサービスです。
インスタンスタイプ
インスタンスタイプというと、各インスタンスタイプごとに「t2.micro」のような名前が付けられていますが、このインスタンスタイプ名は名称ルールに基づいており、インスタンスタイプ名からインスタンスの様々な情報を判別できるようになっています。

①インスタンスファミリー
どのような用途に適したインスタンスであるかを示します。
最適な用途 | インスタンスファミリー |
---|---|
一般用途向け | m、t |
コンピューティング最適化 | c、g、gr |
メモリ最適化 | r、u、x、z |
ストレージ最適化 | d、i、im、is |
高速コンピューティング | dl、f、inf、p、trn、vt |
HPC(高性能コンピューティング)最適化 | hpc |
macインスタンス | mac |
※特定のリージョンでのみ利用可能なインスタンスファミリーがあります。
②インスタンス世代
数字が大きくなるほど新しい世代を示します。
③追加機能
追加機能が有るインスタンスと無いインスタンスがあります。
インスタンス | 追加機能 |
---|---|
a | AMD EPYC 搭載 |
b | EBS 帯域を強化 |
d | 内蔵ストレージ(インスタンスストア)を付加 |
e | 追加メモリ |
g | AWS Graviton 搭載 |
i | Intel Xeon 搭載 |
n | ネットワークを強化 |
z | CPU クロックを強化 |
i-flex | flexインスタンス(※) |
※i-flexはIntel 製スケーラブルプロセッサを搭載したインスタンスです。
④インスタンスサイズ
リソースの大きさを表し、次の順序で大きくなります。
nano ⇒ micro ⇒ small ⇒ medium ⇒ large ⇒ xlarge ⇒ nxlarge
nxlarge はxlarge × n 倍分vCPUやメモリ、時間あたりの料金が倍増されたインスタンスサイズとなります。
⑤例外
例外的に、これまで説明してきたインスタンスタイプの名称ルールに則っていないインスタンスタイプも存在します。
a1インスタンス
64bit ARMアーキテクチャA1 のインスタンスです。
ベアメタルインスタンス
ハードウェアへのダイレクトアクセス機能を提供するベアメタルインスタンスです。
アプリケーションが、サーバー基盤のハードウェアに直にアクセスする必要がある場合に有効です。
ハイメモリインスタンス
TiB単位の大容量メモリを搭載したインスタンスです。u-6tb1.metal、u-9tb1.metal、u-12tb1.metal、u-18tb1.metal、およびu-24tb1.metalが存在し、tbが付く数字はメモリの容量を示します(u-6tb1の場合は6TiBということです)。
Amazon EC2インスタンスにおけるコスト節約の考え方
Amazon EC2インスタンスのコスト節約を検討する際は、主に次の観点について考えます。
- サイジング
- 世代の最新化
- リージョンの選定
サイジング
CPUやメモリなどのハードウェアリソースが、実際に必要とするCPUやメモリなどを上回りつつ、最小となるインスタンスを選択します。
オンプレミスサーバの場合、CPUの変更やメモリの増設を容易に実施できないため、サーバスペックを検討する際にある程度リソースに余剰を持たせます。
一方でクラウドの場合、実際の運用状況に応じて柔軟にリソースの追加や削除を行えるという特徴があります。そして、コストは従量課金で掛かるため、基本的には必要最低限のスペックで運用し、必要となった際にリソースを拡張する方針とすることで、コストを削減することができます。
インスタンスは、vCPU / メモリが小さいほどコストは低価格となるため、適正なサイズにサイジングすることが重要です。
世代の最新化
なるべく最新世代のインスタンスを利用することで、コストを抑えることができます。基本的には、同じインスタンスファミリーを利用する場合、最新世代の方がコストパフォーマンスも高くなるため、最新世代のインスタンスを利用するだけでコストを節約できます。
リージョンの選定
なるべく料金が安くなるリージョンでインスタンスを立てることで、コストを抑えられます。実は、同じインスタンスでも、リージョンごとに料金が異なります。
日本では、多くの方が東京・大阪リージョンを選択してインスタンスを起ち上げると思いますが、海外のリージョンを選択してインスタンスを立てることでコストを節約することができる場合があります。
注意点としては、特に運用上の制約が無いか考慮すべきであることと、リージョン間で通信が発生する場合はデータ転送料金が発生することです。
AWS Compute Optimizerの利用
利用している環境で、インスタンスタイプを変更すべきAmazon EC2インスタンスが存在するのか。
数多くの種類のインスタンスタイプが提供されているなかで、その1つ1つに関して検討するのは大変ですし、管理しているAmazon EC2インスタンス台数が多いと更に分析は大変なものになります。
ここで、便利なのがAWS Compute Optimizerです。
AWS Compute Optimizerとは
AWS Compute Optimizerは、Amazon EC2インスタンスに関連するリソース(CPUやメモリ等)の使用状況から最適なインスタンスタイプを分析し、Amazon EC2インスタンスに関するコスト削減策の推奨事項を提供してくれます。推奨事項を参考にして、インスタンスタイプを変更すべきかどうかの判断に役立てることができます。
しかも、AWS Compute Optimizerの機能自体は基本的に無料で利用できるので、気軽に利用を始めてみることをお勧めします。
※推奨事項分析に使用する、Amazon CloudWatchによるモニタリング料金が掛かります。
AWS Compute Optimizerを始める
ということで、早速、AWS Compute Optimizerサービスの利用を始めてみましょう。
AWSマネジメントコンソールにサインインし、検索ウィンドウに“compute” と入力して、検索結果より「AWS Compute Optimizer」サービスをクリックします。

初めて利用する場合は以下の画面が表示されるので、「ご利用開始」をクリックします。

次に表示される「アカウントのオプトイン」画面で、「オプトイン」をクリックします。

オプトインが完了すると、Compute Optimizerのダッシュボード画面が表示されます。

オプトインを実行してからしばらくすると、ダッシュボードに推奨事項が表示されます。
※推奨事項は、オプトインしてから最大12時間かかる場合があります。
AWS Compute Optimizerによる推奨事項の表示
ライツサイジングに関する推奨事項の設定を変更することができます。
AWS Compute Optimizerのナビゲーションメニューにある「設定」メニューより「ライツサイジング」をクリックし、「EC2とAuto Scalingグループ」欄の「デフォルトリージョン」右にある「編集」をクリックします。

編集画面のステップ1、ステップ2で、ライツサイジングの推奨設定を適用するリージョンや推奨するAmazon EC2インスタンスタイプの優先設定をカスタマイズすることができますが、これらの設定は何も変更せずに既定値のままとすることをお勧めします。


ステップ3ではルックバック期間(分析に使用するデータをどこまで振り返るか)とライツサイジングの指標基準について設定できます。
「ルックバック期間」に関しては、14日、32日、93日から選択することができます。93日を選択する場合は、拡張インフラストラクチャメトリクスを有効にする必要があり、これは有料機能です。

「使用率プリセット」でCPUとメモリの使用状況に関して、分析の指標を変更することができます。例えば、最もコスト節約を重視して分析を行いたい場合、「最大節約額」を選択することで、コスト節約を重視したライツサイジングの推奨結果を受け取ることができます。

本来は、コスト節約と必要なパフォーマンス要件の双方を考慮したリソース最適化がベストではありますが、個人で利用する環境でとことんコスト節約を追及したいということでしたら、指標をカスタマイズするのも良いでしょう。
使用率プリセットを変更すると、画面下にある「CPU使用率」と「メモリ使用量」の分析指標が連動する形で変更されます。指標の変更によって、それぞれの設定がどのように連動して変更されるかをまとめた表を掲載します。
指標 | CPU使用率 | メモリ使用量 | |
---|---|---|---|
しきい値 | ヘッドルーム | ヘッドルーム | |
デフォルト | P99.5 | 20% | 20% |
最大節約額 | P90 | 0% | 10% |
バランス | P95 | 30% | 30% |
最大パフォーマンス | P99.5 | 30% | 30% |
ヘッドルームという言葉があまり聞き慣れないかもしれません。これは、現在の使用率と最大処理能力との間のギャップを表す値です。
クラウドリソースの場合、オンプレミスとは対照的に余剰リソースはなるべく作らず、実際の使用量に近いリソース量に設定する形が最適とされます。しかし、ヘッドルームを例えば30%と設定することで、余剰30%を確保する形でリソースに関する推奨事項を受け取ることができるということが可能となります。
規模の適正化に関する推奨事項を有効にする
AWS Compute Optimizerと併せて、Cost Explorer の「規模の適正化に関する推奨事項」を有効にすることで、Amazon EC2インスタンスのサイズに関する推奨事項を取得でき、インスタンスサイズの縮小や終了によるコスト削減を期待できます。
AWSマネジメントコンソールより、Cost Explorerにアクセスします。AWSマネジメントコンソールの検索ウィンドウに“cost” と入力し、検索結果より「Billing and Cost Management」サービスをクリックします。

ナビゲーションメニューの「設定」メニューより「コスト管理の設定」をクリックし、「規模の適正化に関する推奨事項を有効化」にチェックを入れます。その後、画面右下の「設定を保存」をクリックして設定変更を適用します。

規模の最適化に関する推奨事項を利用する場合は、Billing and Cost Managementのナビゲーションウィンドウにある「レガシーページ」より、「規模の適正化」をクリックします。

コスト最適化ハブの有効化
規模の適正化に関する推奨事項を有効にする場合、同時にCost Optimization Hubを使用することが推奨されています。
Cost Optimization Hub は、AWS アカウント単位またはAWSリージョン単位で提供されるコスト最適化の推奨事項を統合し、優先順位を付けるのに役立つ機能です。Cost Optimization Hubを利用することで、AWSコスト最適化の推奨事項を特定、フィルタリング、集計し、一元的に利用することができます。
Cost Optimization Hubの使用を開始するには、AWSマネジメントコンソールより、Cost Explorerにアクセスします。AWSマネジメントコンソールの検索ウィンドウに“cost” と入力し、検索結果より「Billing and Cost Management」サービスをクリックします。

ナビゲーションペインより「Savingsとコミットメント」>「コスト最適化ハブ」をクリックします。

表示される「コスト最適化ハブ」画面で、「有効化」をクリックします。

有効化が完了すると、Cost Optimization Hubのダッシュボード画面が表示されます。

インスタンスタイプの変更
インスタンスタイプの変更は、AWSマネジメントコンソールからGUI操作で簡単に実施することができます
「EC2」サービスのインスタンス画面に移動し、インスタンスタイプを変更したいインスタンスの状態が「停止済み」であることを確認します。

インスタンスタイプを変更したいインスタンスにチェックを入れ、画面右上の「アクション」をクリックして表示されるメニューより、「インスタンスの設定」>「インスタンスタイプを変更」の順でクリックします。

次に表示される画面にて、「新しいインスタンスタイプ」欄をクリックします。

クリックするとインスタンスタイプのリストが表示されるので、変更先としたいインスタンスタイプをクリックで選択します。

変更先となるインスタンスタイプを選択すると、以下画像のように現在のインスタンスタイプ(画像の場合はt2.micro)と変更先インスタンスタイプ(画像の場合はt3.micro)を左右並べる形で、リソースやオンデマンド価格等の比較情報を表示してくれます。

変更先インスタンスタイプがCPU追加機能を有している場合、「高度な詳細」欄にてCPUオプションの設定ができます。変更設定を終えたら、画面右下の「変更」をクリックします。

ここで、変更先インスタンスタイプがアーキテクチャやサポート範囲外等の問題で変更できない場合は、エラーとして教えてくれます。


インスタンスタイプの変更が完了すると、次のメッセージが表示されます。

インスタンスタイプの変更を行った際は、変更操作を行ったインスタンスを起動し、アプリケーションやパフォーマンスに関する動作確認をしっかり行いましょう。
さいごに
いかがでしたでしょうか。今回はAWSコスト節約術の1つとして、インスタンスタイプの変更を取り上げてみました。
最後に変更手順も解説しましたが、インスタンスタイプの変更操作はGUIによるクリック操作で簡単にできてしまいます。問題があって変更できない場合もエラーとして教えてくれるので、安心して変更できるのも嬉しいです。
Amazon EC2インスタンスに掛かる料金は、AWSリソースの利用料金全体に占める割合が大きくなりがちですから、新しい世代に変更するだけでも大きなコスト節約を期待できると思います。
是非とも今回の記事を参考に、インスタンスタイプ変更を検討および実行してみましょう。
関連記事