半日しか稼働しない EC2 インスタンスの Savings Plans 購入額を試算して図示してみた
コーヒーが好きな emi です。最近はカフェインを控えています。
「半日しか起動しない EC2 インスタンス Saving Plans を購入する場合、コミットメント金額は半分で購入すればよいのか?」 という疑問がありました。見積り方や Saving Plans の当たり方を調査し図示しましたので、共有します。
最初に結論
半日しか稼働しない EC2 インスタンスで、EC2 Instance Savings Plans コミットメント額を 1 時間の上限額の半分しか購入しない場合、以下図のように 12 時間分の SP が空振りになります。
Saving Plans のおさらい
Saving Plans(以下、SP)を簡単に一言で表すと、 「1or3年間、1時間にxxxドル使う!」と宣言すると割引を受けられる 仕組みです。
インスタンスタイプを指定して購入するリザーブドインスタンス(以下、RI)と比べて Lambda や Fargate にも適用できるなど柔軟性が高いのが特徴です。
Saving Plans には以下 3 つのプランがあります。
プラン | 概要 |
---|---|
Compute Savings Plans | EC2 や Lambda、Fargate などのコンピュート系サービスを横断して割引を受けられるプランです。柔軟性が高いです。 |
EC2 Instance Savings Plans | EC2 インスタンスのみを対象とした割引率の高い Savings Plans です。リージョンやインスタンスファミリーを決めて割引を受けられます。そのリージョンのファミリー内におけるインスタンス間で使用量を変更する柔軟性も提供されます。例えば Windows を実行する c5.xlarge から Linux を実行する c5.2xlarge に移動しても、自動で Savings Plan 料金の恩恵を受けられます。 |
SageMaker Savings Plans | SageMaker の割引に特化したプランです。 |
Savings Plans とリザーブドインスタンスの違いについてはこちらのブログが分かりやすいので参照ください。
Saving Plans の見積と買い方
EC2 Savings Plans の見積から購入方法まではこちらのブログが分かりやすいので参照ください。
ざっくり書くと以下 2 ステップです。
- Compute Savings Plans ページを見てコミットメント金額を見積もる
- マネジメントコンソール [請求とコスト管理ページ(Billing and Cost Management)] - [ Savings Plans の購入] より必要事項を記入して購入操作をおこなう
Compute Savings Plans ページを見てコミットメント金額を見積もる
1.以下のページにアクセスすると、1 時間あたりのコミットメント上限額( 「Saving Plans の料金」 がそうです)が分かります。
以下は EC2 Instance Savings Plans の 1 時間あたりのコミットメント上限額(Saving Plans の料金)を見積もった例です。
場所のタイプ、リージョン、期間、支払いオプション、インスタンスファミリー、OS、テナンシーを指定し、購入するインスタンスタイプで検索しています。
上の例では EC2 Instance Savings Plans を東京リージョンで r5.4xlarge の Linux インスタンスを前払いなしで購入する場合の 1 時間あたりのコミットメント上限額(Saving Plans の料金)が 0.766 USD であることが分かります。
2. マネジメントコンソール [請求とコスト管理ページ(Billing and Cost Management)] - [ Savings Plans の購入] より必要事項を記入して購入操作をおこなう
請求とコスト管理ページ(Billing and Cost Management)で見積もった 1 時間あたりのコミットメント上限額(Saving Plans の料金)を記入して購入できます。
Saving Plans で割引を受けたい EC2 インスタンスが半日しか起動していない場合は?
Saving Plans で割引を受けたい EC2 インスタンスが夜間停止している場合…例えば半日(12 時間)しか起動していない場合はどのように Saving Plans を購入したらよいのでしょうか。EC2 Instance Savings Plans を例にイメージを記載します。
起動時間:24時間、EC2 インスタンス SP 購入コミットメント額:1 時間の上限額 Max
まず、24 時間稼働している場合のイメージです。EC2 Instance Savings Plans は上限額 Max で購入しているとします。
青が起動時間、緑が購入した EC2 Instance Savings Plans があたっている時間です。
「1. Compute Savings Plans ページを見てコミットメント金額を見積もる」 で 1 時間あたりのコミットメント上限額(Saving Plans の料金)が 0.766 USD と見積りましたが、この場合は上限額 Max の 0.766 USD で購入したケースです。
起動時間:24時間、EC2 インスタンス SP 購入コミットメント額:1 時間の上限額の半分
次に、24 時間稼働していて、EC2 Instance Savings Plans は上限額の半分で購入しているイメージです。赤がオンデマンド料金が発生している時間です。
繰り返し 「1 時間あたりのコミットメント上限額(Saving Plans の料金)」 と記載していますが、「 1 時間あたりの 」と言うのがポイントで、図のように 1 時間の半分の時間だけ SP があたっていて、残りの半分は通常のオンデマンド料金が発生しているイメージになります。
「1. Compute Savings Plans ページを見てコミットメント金額を見積もる」 で 1 時間あたりのコミットメント上限額(Saving Plans の料金)が 0.766 USD と見積りましたが、この場合は上限額の半分の 0.766 ÷ 2 = 0.383 USD で購入したケースです。
起動時間:12時間、EC2 インスタンス SP 購入コミットメント額:1 時間の上限額の半分
1 日の半分、つまり 12 時間稼働していて、EC2 Instance Savings Plans は上限額の半分で購入しているイメージです。
「半日しか起動していないから、購入額も半分でいいや」 と考えてこのように購入すると、EC2 インスタンスが停止している時間帯の SP が空振り、無駄打ちになってしまうのが分かりますでしょうか。
「12 時間オンデマンド料金で稼働させた場合の料金」 と、「12 時間起動して EC2 インスタンス SP を上限額の半分購入した場合の料金」 の比較
「12 時間オンデマンド料金で稼働させた場合の料金」 と、「12 時間起動して EC2 インスタンス SP を上限額の半分購入した場合の料金」 を表で比較すると以下のようになります。EC2 インスタンス SP を上限額の半分で購入した場合の方が料金が高くなっています。EC2 インスタンス SP を買わない方がコストが抑えられているということです。
- | オンデマンド料金 | EC2 インスタンス SP の料金 | 合計 |
---|---|---|---|
12 時間オンデマンド料金で稼働させた場合の料金 | 1.216 USD * 12h = 14.592 USD | - | 14.592 USD |
12 時間起動して EC2 インスタンス SP を上限額の半分購入した場合の料金の比較 | 1.216 USD * 12h ÷ 2 = 7.296 USD | (0.766 USD ÷ 2) * 24h = 9.192 USD | 9.192 USD + 7.296 USD = 16.488 USD |
12 時間オンデマンド料金で稼働させた場合の料金のかかり方のイメージ図は以下です。
12 時間起動して EC2 インスタンス SP を上限額の半分購入した場合の料金のかかり方のイメージ図は以下です。
おわりに
「1 時間あたりのコミットメント上限額(Saving Plans の料金)」 の 「 1 時間あたりの 」 の部分がポイントでした。「半日しか起動していないから、購入額も半分でいいや」 と考えてコミットメント額を半分で購入してしまうと、逆にコスト増になってしまう場合があるので注意してください。
本記事への質問やご要望については画面下部のお問い合わせ 「DevelopersIO について」 からご連絡ください。記事に関してお問い合わせいただけます。
参考