キーワードで検索

今日を知り、明日を変えるシステム運用メディア

【第4回】個人向け!貧乏エンジニアのAWS節約術 ─ EC2インスタンス編

【第4回】個人向け!貧乏エンジニアのAWS節約術 ─ EC2インスタンス編

クラウドが普及した昨今、勉強のため、スキルアップのため、クラウドを実際に触って色々と検証をしているITエンジニアの方も多いのではないでしょうか。

すぐに始めることができ、様々なサービスを試すことができるのはクラウドの利点です。しかし、複雑な料金体系や使ったリソースを放置して想定外の利用料を請求されたという方もいらっしゃると思います。

この記事は、個人のITエンジニアの方を対象に、クラウド利用量の節約術について、何回か回数を分けて紹介していきます。

今回はその第4回ということで、より実践的なコスト削減策として、Amazon EC2インスタンスタイプの選定および変更によるコスト節約術を解説します。コスパよくクラウドを利用したい方は、ぜひ参考にしてください。

関連記事

Amazon EC2インスタンスのおさらい

Amazon EC2は、仮想サーバ機能を提供するAWSのサービスです。Amazon EC2インスタンスは、メインとなる仮想サーバに関するサービスです。

インスタンスタイプ

インスタンスタイプというと、各インスタンスタイプごとに「t2.micro」のような名前が付けられていますが、このインスタンスタイプ名は名称ルールに基づいており、インスタンスタイプ名からインスタンスの様々な情報を判別できるようになっています。

Amazon EC2 インスタンスタイプ

①インスタンスファミリー

どのような用途に適したインスタンスであるかを示します。

最適な用途インスタンスファミリー
一般用途向けm、t
コンピューティング最適化c、g、gr
メモリ最適化r、u、x、z
ストレージ最適化d、i、im、is
高速コンピューティングdl、f、inf、p、trn、vt
HPC(高性能コンピューティング)最適化hpc
macインスタンスmac
インスタンスファミリー一覧(2024年12月現在)

※特定のリージョンでのみ利用可能なインスタンスファミリーがあります。

②インスタンス世代

数字が大きくなるほど新しい世代を示します。

③追加機能

追加機能が有るインスタンスと無いインスタンスがあります。

インスタンス追加機能
aAMD EPYC 搭載
bEBS 帯域を強化
d内蔵ストレージ(インスタンスストア)を付加
e追加メモリ
gAWS Graviton 搭載
iIntel Xeon 搭載
nネットワークを強化
zCPU クロックを強化
i-flexflexインスタンス(※)
追加機能一覧(2024年12月現在)

※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」サービスをクリックします。

AWS Compute Optimizerを始める

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

AWS Compute Optimizer、ご利用開始

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

AWS Compute Optimizer、オプトイン

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

AWS Compute Optimizer、オプトインが完了

オプトインを実行してからしばらくすると、ダッシュボードに推奨事項が表示されます。
※推奨事項は、オプトインしてから最大12時間かかる場合があります。

AWS Compute Optimizerによる推奨事項の表示

ライツサイジングに関する推奨事項の設定を変更することができます。

AWS Compute Optimizerのナビゲーションメニューにある「設定」メニューより「ライツサイジング」をクリックし、「EC2とAuto Scalingグループ」欄の「デフォルトリージョン」右にある「編集」をクリックします。

AWS Compute Optimizer、デフォルトリージョン

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

AWS Compute Optimizer、リージョン範囲
AWS Compute Optimizer、優先EC2インスタンス

ステップ3ではルックバック期間(分析に使用するデータをどこまで振り返るか)とライツサイジングの指標基準について設定できます。

「ルックバック期間」に関しては、14日、32日、93日から選択することができます。93日を選択する場合は、拡張インフラストラクチャメトリクスを有効にする必要があり、これは有料機能です。

AWS Compute Optimizer、ルックバック期間と指標

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

AWS Compute Optimizer、使用率プリセット

本来は、コスト節約と必要なパフォーマンス要件の双方を考慮したリソース最適化がベストではありますが、個人で利用する環境でとことんコスト節約を追及したいということでしたら、指標をカスタマイズするのも良いでしょう。

使用率プリセットを変更すると、画面下にある「CPU使用率」と「メモリ使用量」の分析指標が連動する形で変更されます。指標の変更によって、それぞれの設定がどのように連動して変更されるかをまとめた表を掲載します。

指標CPU使用率メモリ使用量
しきい値ヘッドルームヘッドルーム
デフォルトP99.520%20%
最大節約額P900%10%
バランスP9530%30%
最大パフォーマンスP99.530%30%

ヘッドルームという言葉があまり聞き慣れないかもしれません。これは、現在の使用率と最大処理能力との間のギャップを表す値です。
クラウドリソースの場合、オンプレミスとは対照的に余剰リソースはなるべく作らず、実際の使用量に近いリソース量に設定する形が最適とされます。しかし、ヘッドルームを例えば30%と設定することで、余剰30%を確保する形でリソースに関する推奨事項を受け取ることができるということが可能となります。

規模の適正化に関する推奨事項を有効にする

AWS Compute Optimizerと併せて、Cost Explorer の「規模の適正化に関する推奨事項」を有効にすることで、Amazon EC2インスタンスのサイズに関する推奨事項を取得でき、インスタンスサイズの縮小や終了によるコスト削減を期待できます。

AWSマネジメントコンソールより、Cost Explorerにアクセスします。AWSマネジメントコンソールの検索ウィンドウに“cost” と入力し、検索結果より「Billing and Cost Management」サービスをクリックします。

Cost Explorer、Billing and Cost Management

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

Cost Explorerコスト管理の設定

規模の最適化に関する推奨事項を利用する場合は、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」サービスをクリックします。

Cost Explorer、Billing and Cost Management

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

コスト最適化ハブ

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

コスト最適化ハブで、有効化

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

Cost Optimization Hubのダッシュボード画面

インスタンスタイプの変更

インスタンスタイプの変更は、AWSマネジメントコンソールからGUI操作で簡単に実施することができます

「EC2」サービスのインスタンス画面に移動し、インスタンスタイプを変更したいインスタンスの状態が「停止済み」であることを確認します。

インスタンスタイプの変更

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

インスタンスタイプの変更方法

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

新しいインスタンスタイプ

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

新しいインスタンスタイプのリスト

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

インスタンスタイプの比較

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

インスタンスタイプ、CPUオプションの設定

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

インスタンスタイプ、CPUオプションの設定エラー
変更においてアーキテクチャに問題がある場合のエラーメッセージ例
インスタンスタイプ、CPUオプションの設定エラー2
変更先インスタンスタイプが使用AZでサポートされていない場合のエラーメッセージ例

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

インスタンスタイプ、CPUオプションの設定(完了)

インスタンスタイプの変更を行った際は、変更操作を行ったインスタンスを起動し、アプリケーションやパフォーマンスに関する動作確認をしっかり行いましょう。

さいごに

いかがでしたでしょうか。今回はAWSコスト節約術の1つとして、インスタンスタイプの変更を取り上げてみました。

最後に変更手順も解説しましたが、インスタンスタイプの変更操作はGUIによるクリック操作で簡単にできてしまいます。問題があって変更できない場合もエラーとして教えてくれるので、安心して変更できるのも嬉しいです。

Amazon EC2インスタンスに掛かる料金は、AWSリソースの利用料金全体に占める割合が大きくなりがちですから、新しい世代に変更するだけでも大きなコスト節約を期待できると思います。

是非とも今回の記事を参考に、インスタンスタイプ変更を検討および実行してみましょう。

関連記事

サーバエンジニア歴7年、ネットワークエンジニア歴4年。 長らくSI業界のインフラ部隊に勤め、基本設計から導入まで一通りの経験あり。

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録