Reserved Instanceの推奨事項をSavings Planのコミット額に変換する方法

記事タイトルとURLをコピーする

CS課佐竹です。
またも Savings Plans のブログですみません。

2020年3月26日追記

AWS Cost Explorer now offers Savings Plans Recommendations for Member (Linked) Accounts

https://aws.amazon.com/jp/about-aws/whats-new/2020/03/aws-cost-explorer-now-offers-savings-plans-recommendations-for-member-linked-accounts/

上記の通り、Savings Plans の機能として Linked Account 別の推奨値が表示可能になりました。以下が画面キャプチャとなります。

右上に [Filter by] も用意されており、アカウントIDでの絞り込みも可能となりました。ただし、「Savings Planは推奨事項を小数点第2位で四捨五入している」という点は現在も同様ですため、ご留意ください。また、「AWS アカウント間の共有無効化」を行っているAWSアカウントがある場合、そのAWSアカウントは推奨の一覧から省かれてしまう点もご注意ください。

はじめに

Savings Plans を推奨値を参考に4種類購入してみました」にて「運用Tips 1」の項目で「この Recommendation は Reserved Instance と異なり「特定のAWSアカウントを省く」「Compute SP で特定のRegionだけに絞り込む」などができません。」と述べました。しかし「AWS アカウント間の共有無効化」を行うことで1つのAWSアカウントにSavings Planを閉じ込めて運用したいというお客様もいらっしゃいます。このような場合に有効なのが、RIをSPのコミット額に変換する方法です。この手法は意外にもご要望が多く、ついにブログになってしまいました。以下で詳しくそのロジックについて記載致します。
過去のSavings Planに関するブログ記事は「カテゴリー:コスト削減」をご確認ください。

Reserved Instance の推奨事項をダウンロードする

まずは「RI 推奨事項パラメータ」を必要な事項に絞り込みます。Savings Planでコミットする組み合わせと同じ設定としてください。今回は以下の設定としました。

  • RI 期間:1 年間
  • 提供クラス:コンバーティブル
  • 支払いオプション:全額前払い
  • 基準とする直近の期間:7 日間

提供クラスについて記載しますと、「Savings Plan と Reserved Instance の比較」で記載しました通り「Compute Savings Plan」が「Convertible Reserved Instance」と同じだけのコスト削減効果を持ちます。多くのお客様でCompute SPをご選択頂いておりますため、今回はConvertible RIを選択しております。

また、右下の「追加フィルタ」についてご説明します。これがReserved Instanceの推奨事項にのみに存在する「AWSアカウント別に推奨事項を出す」機能です。これを利用することで特定のAWSアカウントのみに絞り込むことや、反対に特定のアカウントの除外が可能です。今回は特に追加フィルタを利用しませんが、画像では例として特定のAWSアカウントを除外しています。選択項目が定まりましたら、「CSVのダウンロード」から推奨事項をダウンロードしてください。
なお、今回の計算も弊社「検証用AWSアカウント」より実施しています。

ExcelでSavings Planのコミット額に換算する

「ec2-recommendations.csv」という名前のCSVファイルがダウンロードされます。これをまずはExcelで開きます。Excelで開くと、「T列」に「Upfront Cost」という名称の項目が存在するかと思います。

この「Upfront Cost」をまず全て加算します。今回であれば計算式は「=SUM(T2:T23)」としました。すると、「16563」になりました。これは $16,563 が「全額前払いの合計額」ということです。そして次にこれを時間単位に変換します。Savings Planは「時間当たりのコミット額」で購入するため、365日&24時間で除算することで変換可能なのです。

「全額前払いの合計額」÷24÷365を行うことで、無事に$1.890753425が得られました。これで終わり、と言いたいのですが、Savings Planはコミット額が $0.001 単位までとなっています。そのため小数点第4位を四捨五入します。最終的にコミットする額は「$1.891/hr」となることが計算できました!

補足:「3年×全額の前払い」の場合は、計算式に÷3(3年を1年に修正する)を入れる必要があります

前払いなしでも簡単に計算できます

先の例では「全額前払い」で計算しましたが、「前払いなし」でも似た計算で換算可能です。前払いなしでは「Recurring Monthly Cost」の項目に「減額後の毎月の支払い額」が出ます。AWSの月額は365日(1年)を12で割ったものと定められておりますので、合計(SUM)したものを12倍することで年間の合計額(年額)に換算できます。後は同様に除算します。「Recurring Monthly Costの合計額」×12÷24÷365が実際の計算式です。

小数点第4位を四捨五入し 「$1.917/hr」となりました。

補足:「3年×前払いなし」の場合は、計算式に÷3(3年を1年に修正する)を入れる必要はありません

注意点その1

今回のRI⇒SPへの変換は、「RIのEC2の推奨事項」を元にしています。EC2の推奨事項にはFargateが含まれません。そのため、これによって計算されたSPのコミット推奨額はEC2のみの値となり、Fargateをメインで利用されているお客様では正確な値になりませんためご注意ください。本方法が有効なのは、EC2 Instanceのみをご利用されているもしくは、EC2 Instanceの利用が多くを占めるお客様で有効です。
もしFargateのコミット額を追加されたい場合は、Fargateの利用状況から割り出したコミット額を別途計算結果に追加する対応が必要となります。

注意点その2

Savings Plan の推奨事項とズレが出ます。理由は主に3つあり「Fargateが存在すること」「Savings PlanとReserved Instanceで推奨事項の計算ロジックが(恐らく)異なること」「Savings Planは推奨事項を小数点第2位で四捨五入していること」です。Fargateが入ると値がズレてしまうことは先にお伝えした通りですが、少々困るのは「Savings Planは推奨事項を小数点第2位で四捨五入していること」です。これはSavings Planの推奨事項を様々なパターンで見て頂けるとわかるのですが、全ての推奨事項は小数点第2位が0になっています。

上の通り、小数点第2位は常に0です。先ほど、最終的なコミット額は計算結果により「$1.891/hr」と判明したのですがこの小数点第2位の四捨五入により、Savings Plan側の推奨事項は「$1.90」と表示されます。これは利用料が大きく、コミット額が$10以上になるようなお客様では気にしなくていい誤差レベルの話なのですが、コミット額が小さく $0.5/hr 程度のお客様ではかなり差が出てしまいます。$0.45/hr も $0.50 に丸められてしまいますので、オーバーコミット気味になってしまう可能性があります。コミットの額が $1/hr 以下のお客様ではRIの推奨事項をSPに変換した値を正とされたほうがより正しい額になると考えています。

RIの推奨事項に関する補足説明

RIの推奨事項というのは「オンデマンド利用料に対する推奨事項」である点にご留意ください。SPが適用された額は「オンデマンドの利用料ではない」ためにRIの推奨事項事項の対象となりません。具体的にご説明します。

上はCost Explorerにおける「Monthly EC2 running hours costs and usage」をCharge Type別で表示したものです。項目の意味は以下の通りです。

  1. Savings Plan Covered Usage=SPが適用された減額後の利用料…[1]
  2. Usage=通常のオンデマンドでの利用料(割引無し)…[2]
  3. Reservation applied usage=RIが適用された減額後の利用料…[3]

この状況で今回RIの推奨事項を表示・利用しておりますが、この推奨事項の対象は[2]のUsageを対象にしているのみです。[1]はRIの推奨事項の対象外です。よってRIの推奨事項をそのまま活用して問題がない、ということになります。

まとめ

今回はRIの推奨事項をSavings Planのコミット額に変換するロジックについて説明致しました。まとめると以下の通りです。

  • RIの推奨事項をSPコミット額に変換することが可能である
  • RIの推奨事項はAWSアカウント別に出力できるため、アカウント別のSPコミット額の推測が可能
  • 注意点1:RIの推奨事項にはFargateが含まれていないため、Fargateの利用があるアカウントでは不正確な(実際よりも少額の)値となる
  • 注意点2:SPの推奨事項は小数点第2位が四捨五入されており、RIの推奨事項と完全には一致しない

Savings Planのアカウント別の推奨事項を見るには「マスターアカウントとメンバーアカウントを1:1にした状態で最低7日間置いておくしかない」という話を稀にお聞きしますが、それはあまりにも手間ですので、今回利用したRI⇒SPの推奨事項変換作業でおおよその予測をして貰えると嬉しく思います。

ではまたお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023 Japan AWS Top Engineers/2020-2023 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。