Fargate向けCompute Savings Plansのコミット金額をAWS使用状況レポートで算出してみた
こんにちは!クラウド事業本部のおつまみです。
みなさん、Savings Plans を活用していますか?
Savings Plans とは、1年または3年間の継続的な利用を契約することで、EC2・Fargate・Lambdaなどの対象サービスをオンデマンド価格より割引で利用できる柔軟な料金モデルのことです。
どのくらいの金額をコミットすればいいか、簡単に分かる方法は Savings Plans 推奨事項を活用することです。
ただし環境によっては、この推奨事項が正しく表示されない場合があります。
また、Amazon Quick を使って可視化する方法も有用です。
こちらの方法も正確な情報を得られるため大変便利ですが、セットアップの手間がかかります。
そこで本記事では、追加ツールのセットアップなしになるべく簡単にコミット金額を算出できる方法として、AWS 使用状況レポートを活用した手順をご紹介します。
なお、今回の購入対象はFargate向けのCompute Savings Plans(以下 Compute SP)を想定しています。
3行まとめ
- AWS使用状況レポート(時間単位)からFargateのvCPUとメモリの使用量を取得できます。
- ExcelのIF・SEARCH関数を使い、UsageValueをvCPU時間・GB時間に換算して可視化できます。
- 時間帯ごとの最小使用量をベースにコミット量を決定することでリスクを抑えられます。
Compute Savings Plansとは
改めて Compute Savings Plans について紹介します。
Compute Savings Plansは、EC2・Fargate・Lambdaにまたがって適用できる柔軟な割引プランです。
1年または3年のコミットメントにより、オンデマンド価格と比べて最大66%の割引を受けられます。
EC2 Savings PlansやReserved Instancesと異なり、インスタンスタイプやリージョン・OSを問わず適用されるため、特にFargateのように動的にスケールするワークロードに向いています。
ポイントは「時間あたりのコミット金額($/hour)」で購入する点です。
そのため、実際のリソース使用量を事前に把握しておくことが重要になります。
「時間あたりのコミット金額って?」と疑問に思われた方はこちらのブログをご参照ください。
どれくらい購入すればよいのか
基本的な考え方
Compute SPのコミット量は「常時保証できる最低ラインの使用量」に合わせて設定するのが基本です。
ピーク時の使用量に合わせてしまうと、利用が少ない時間帯にコミット分を使い切れず無駄になるリスクがあります。

半日しか稼働しない EC2 インスタンスの Savings Plans 購入額を試算して図示してみた | DevelopersIO より引用
まずは最小使用量ベースで安全に設定し、余裕が出てきたら追加購入するアプローチがおすすめです。
算出手順
Step 1: AWS使用状況レポートのダウンロード
請求とコスト管理 > コストと使用状況レポート > 使用状況レポートをダウンロード にアクセスし、以下の設定でCSVをダウンロードします。
| 項目 | 設定値 |
|---|---|
| サービス | Amazon Elastic Container Service |
| 期間 | カスタム日付範囲(対象の請求期間、ピークがない通常利用期間や前月の1ヶ月間などがおすすめ) |
| レポートの詳細度 | 時間単位 |

Step 2: vCPU使用量の列を追加
ダウンロードしたCSVをGoogleスプレッドシートやExcelにインポートします。

C列 UsageType からvCPU数を算出します。CPUアーキテクチャによって UsageType の値が異なります。
| アーキテクチャ | UsageType |
|---|---|
| x86 | APN1-Fargate-vCPU-Hours:perCPU |
| ARM | APN1-Fargate-ARM-vCPU-Hours:perCPU |
H2セルを「vCPU数」とし、使用しているアーキテクチャに応じて以下の数式を入力します
x86の場合:
=IF(ISNUMBER(SEARCH("vCPU-Hours:perCPU", C2)), G2/1024/1024/1024, "")
ARMの場合:
=IF(ISNUMBER(SEARCH("ARM-vCPU-Hours:perCPU", C2)), G2/1024/1024/1024, "")
UsageValue(G列)を 1024^3 で割ることで、実際のvCPU時間に換算しています。
入力後、フィルハンドルをダブルクリックして最終行までコピーします。

Step 3: メモリ使用量の列を追加
同様に、C列 UsageType からメモリ使用量を算出します。こちらもアーキテクチャによって値が異なります。
| アーキテクチャ | UsageType |
|---|---|
| x86 | APN1-Fargate-GB-Hours |
| ARM | APN1-Fargate-ARM-GB-Hours |
I2セルを「Mem数」とし、使用しているアーキテクチャに応じて以下の数式を入力します
x86の場合:
=IF(ISNUMBER(SEARCH("Fargate-GB-Hours", C2)), G2/1024/1024/1024, "")
ARMの場合:
=IF(ISNUMBER(SEARCH("Fargate-ARM-GB-Hours", C2)), G2/1024/1024/1024, "")
入力後、フィルハンドルをダブルクリックして最終行までコピーします。

Step 4: SP料金(コミット金額)を算出する
使用量に対してSavings Plansの単価を掛け合わせることで、コミットすべき金額($/hour)を算出できます。
単価はCompute Savings Plans料金ページから確認できます(以下は東京リージョン・1年・No Upfront の例)
| アーキテクチャ | リソース | 単価($/hour) |
|---|---|---|
| x86 | vCPU | $0.042976 / vCPU-hour |
| x86 | メモリ | $0.0047005 / GB-hour |
| ARM | vCPU | $0.0255 / vCPU-hour |
| ARM | メモリ | $0.0028 / GB-hour |
J列を「SPの料金(1 時間あたりのvCPU数)」として、アーキテクチャに応じた数式を入力します
x86の場合:
=0.042976*H2
ARMの場合:
=0.0255*H2
K列を「SPの料金(1 時間あたりのGB数)」として、アーキテクチャに応じた数式を入力します
x86の場合:
=0.0047005*I2
ARMの場合:
=0.0028*I2
それぞれフィルハンドルをダブルクリックして最終行までコピーします。

Step 5: SP料金の最小値を確認してコミット金額を決定
J列(vCPUのSP料金)とK列(メモリのSP料金)を使い、**SP料金の合計が最も少ない時間帯(最小値)**を確認します。この最小値をコミット金額の目安にすることで、購入過多のリスクを避けられます。
フィルター機能を利用し確認したところ、今回は「StartTime」02/16/26 20:00:00が最小値となることを確認しました。
この時のSPの料金(1 時間あたりのvCPU数)、SPの料金(1 時間あたりのGB数)は以下の通りです。
- SPの料金(1 時間あたりのvCPU数):
0.6841570647 - SPの料金(1 時間あたりのGB数):
0.1496593579

そして、これらの合計がコミットすべき金額($/hour)の目安になります。
コミット金額($/hour)の目安 = MIN(J列 + K列)
今回の場合、約$0.8338となりました。
あとは Savings Plans の購入から算出したコミット金額分を購入しましょう。

さいごに
今回は、Compute SPでFargateを購入する際の使用量算出方法をご紹介しました。
Compute SPは一度購入すると変更できないため、最小使用量ベースで安全に設定することが重要です。Compute SPをうまく活用して、AWSコストを最適化していきましょう!
また弊社クラスメソッドメンバーズで「ビジネス」「エンタープライズ」プランをご利用中の場合、RI/SP購入相談・代行をご利用できます。

「RI/SP購入する際の相談にのって欲しい」とお悩みの方はぜひ弊社ホームページのお問い合わせよりご相談ください。
最後までお読みいただきありがとうございました。
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!







