はじめまして。リンクアンドモチベーションの綿引です。
本記事では、 私が "EC2 を安く使うため" に注意しているポイントをご紹介します。
尚、今回は初心者向けのため "オンデマンドインスタンスを対象" にしたいと思います。
EC2 作成時に注意するポイント一覧
先に項目の一覧を記載すると以下になります。
- インスタンスタイプは新しいものか?
- EBS ボリュームタイプ/サイズは適切か?
- 停止が可能か?
詳細は以下紹介していこうと思います。
まずは EC2 のコストが何に対して発生するか見てみましょう。
EC2 のコストについて
EC2 は**「各インスタンス毎に使用された時間分のコストが発生する」**従量課金制です。
選択できるインスタンスのタイプは多くの種類があり、それぞれのタイプで性能と時間あたりの使用料金が異なります。
まとめると安く使うコツとしては以下となります。
- 安いインスタンスタイプを選択する
- 出来るだけ性能が良いものをチョイスしたい
- 許される時間停止しておく
では早速、上記の一覧の項目の詳細を記載していきたいと思います。
インスタンスタイプは新しいものか?
まず簡単にインスタンスタイプの説明をします。
t3.medium を例に取ると、以下のように「インスタンスファミリー・世代・サイズ」に分かれます。
項目 | 説明 |
---|---|
t | インスタンスファミリー |
3 | 世代 |
medium | サイズ |
インスタンスファミリーが同じなら基本的にこの世代が新しい方が高性能かつ安価です。
なのでそこで個人的にインスタンスタイプをざっくり決めたら、"世代が最新のもの" を選ぶようにしています。
サイズは「micro」や「medium」、「large」などがあり、大きいものの方が高性能で高価になります。
インスタンスファミリーは「汎用」や「コンピューティング最適化」と言ったモデルに分かれており、それぞれで「t」や「c」といった文字列がつく形になっています。
また t3a.medium など世代の後に「a」や「g」などの文字列が入ってるインスタンスタイプもあり、例えば「a」が入ってると CPU が通常の Intel ではなく AMD のものを使っており、t3.medium より安価だったりします。
このようにインスタンスタイプは様々な種類があり、選択に迷ってしまうこともあるかと思いますが、それぞれの性能・コストを確認した上で「このインスタンスタイプにしよう!」と決めたら、**世代が最新か?**や、**新しく「a」などの文字列がついたものが出てないか?**なども見てみるとより安く高性能なモデルが使えるかもしれません。
EBS ボリュームタイプ/サイズは適切か?
EBS ボリュームタイプとサイズに関しても性能・コストに関わってきます。
ボリュームタイプに関しては速度的な要件が厳しくなければ基本的にデフォルトの「EBS 汎用 SSD(gp2)」でいいかなと思っていますが、今だと2020年に発表された**「EBS 汎用 SSD(gp3)」**の方が安くいためこちらがファーストチョイスかなと思っています。
ただ申し訳ないですが私がそこまで「EBS 汎用 SSD(gp3)」を使ったことないので、あくまで上記の公式を見た見解です。
今後は gp3 は積極的に使っていこうと思います。
サイズに関しては容量によってコストがかかってくるので、余程の要件がなければほどほどのサイズにしましょう。
停止が可能か?
最後に停止が可能かという点ですが、先述した通り EC2 は稼働時間でコストが発生します。
要件で常時起動させておかなければならない場合は仕方ありませんが、そうでない場合は**「可能な限り停止する」**ことが大事になってきますため、個人的の勉強や検証のためで使いたいなど、停止が問題ない場合は基本的に停止しておきましょう。
ただ「日中だけは起動しておきたい!」など時間指定もあるかと思います。
その場合は、日次で停止や起動を行うのも面倒なので自動停止/起動の設定を入れてしまいましょう。
EC2 の自動停止/起動を行う方法としては、以下のようなやり方があるので是非参考にしてみてください。
- 自動起動/停止用の Lambda 関数を作成し CloudWatch Events にて定期実行する
- AWS Instance Scheduler を使用する
1つ目に関しては Lambda 関数は自身を作成し、その Lambda 関数を CloudWatch Events の機能で定期実行する手法です。
CloudWatch Events でのスケジュール設定も cron 式で出来たりするので、比較的わかりやすいかなと思います。
2つ目は 「AWS Instance Scheduler」 という AWS ソリューションを使う方法です。
CloudFormation テンプレートを適用することで自動停止/起動に必要な AWS サービスが作成されるため、使用者は Lambda 関数などコードを書かなくて良い点が魅力です。
他にも手法はあるかもしれませんが、参考にして頂けると良いかなと思います。
おわりに
今回は私が EC2 を安く使うために注意しているポイントをご紹介させて頂きました。
本記事はオンデマンドインスタンスを対象としたため、リザーブドインスタンスや Savings Plans については語りませんでしたが、こちらも**「常に稼働させておくような EC2 を長期間使用する場合」**はコスト削減の有効な手段なので興味があれば見て頂けると良いかと思います。
最後にこの記事が見て頂いた方の何かの参考になれば幸いです。