EC2 の購入オプションの違い ── オンデマンド・RI・スポット・キャパシティ予約の使い分け

目次

概要

EC2 の料金は、同じインスタンスでも「どう買うか」で大きく変わります。長く使うと約束すれば割引が付き、余っているキャパシティを借りればさらに安くなります。ただし、安い買い方ほど「約束に縛られる」か「途中で取り上げられる」かのどちらかの条件が付きます。

設計で大事なのは、ワークロードを 2 つの軸で見分けることです。1 つは「ずっと動くのか、一時的に増えるだけなのか」、もう 1 つは「途中で止められても困らないのか、止まると困るのか」。この 2 つが決まれば、オンデマンド・リザーブドインスタンス・Savings Plans・スポット・キャパシティ予約のどれを選ぶかはほぼ決まります。

この記事では、購入オプションをこの 2 軸で整理し、Auto Scaling グループでオンデマンドとスポットを混ぜる設計にも触れます。実践では、リザーブドインスタンスの購入画面・スポットの料金履歴・キャパシティ予約の作成画面・Auto Scaling グループの購入オプションの設定を、購入・作成の手前まで操作して、それぞれ何を決めるものかを確かめます。

必要な台数を「定常の土台」「中断できないピーク」「中断できる上乗せ」に分けて買う
必要な台数を「定常の土台」「中断できないピーク」「中断できる上乗せ」に分けて買う
クラウドおさる

猿山のバナナ運びも、毎日決まった量を運ぶ当番と、祭りの前だけ呼ぶ助っ人と、手が空いたときだけ手伝う若い猿がいるでござる。どの仕事を誰に任せるか、今日は EC2 の買い方で考えるでござるよ。

この記事のメリット

  • ワークロードの性質(定常か一時的か、中断できるかできないか)から購入オプションを選べるようになる
  • スポットインスタンスの中断の仕組みと、向いていない処理を説明できるようになる
  • キャパシティ予約が「割引」ではなく「確保」を買うものだと区別できるようになる
  • Auto Scaling グループで、オンデマンドのベース容量とスポットの割合を組み合わせる設計が分かる
  • リザーブドインスタンスやキャパシティ予約の購入・作成画面で、何を決める必要があるかを把握できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

購入オプションの一覧

EC2 のユーザーガイドに並ぶ購入オプションのうち、SAA でよく比べられるのは次の 5 つです。料金の払い方そのもの(前払いの種類や Savings Plans の 4 つの種類)は、AWS の料金の払い方とサポート で整理しています。

購入オプション約束中断割引ひと言でいうと
オンデマンドインスタンスなし。起動した時間を秒単位で払うされないなし(基準の料金)いつでも始めて、いつでもやめられる
リザーブドインスタンス(RI)1 年または 3 年、インスタンスタイプとリージョンなどの設定を約束するされないあり構成を固定して長く使うと安くなる
Savings Plans1 年または 3 年、1 時間あたりの利用額(USD)を約束するされないあり利用額を約束すると、構成を変えても割引が当たる
スポットインスタンスなしされる(AWS がキャパシティを必要とした場合など)大幅な割引余っているキャパシティを安く借りる
オンデマンドキャパシティ予約即時使用なら約束なし(いつでもキャンセル可)―なし(リージョンの RI・Savings Plans と組み合わせれば割引が当たる)特定の AZ で起動できる枠を確保する

RI と Savings Plans は「インスタンスそのもの」ではなく、条件に合う利用に自動で当たる請求上の割引です。一方、キャパシティ予約は割引を提供せず、「必要なときに確実に起動できること」を買います。予約した枠は、インスタンスを起動していなくても課金されます。キャパシティ予約に割引を当てられるのは Savings Plans とリージョンの RI で、AZ を指定して買うゾーンの RI の割引は当たりません。

なお、ゾーンの RI は、割引に加えてその AZ のキャパシティも予約します。キャパシティの予約が無いのは、リージョンの RI と Savings Plans です。

クラウドおさる

RI と Savings Plans は「長く頼むから安くして」の約束、キャパシティ予約は「その日は必ず場所を空けておいて」の約束でござる。値引きと場所取りは別物なのでござるな。

2 つの軸で選ぶ

購入オプションは、ワークロードを 2 つの軸で分けると選びやすくなります。

中断されると困る中断されても困らない
定常的に動く(ベースの量)RI または Savings Plansスポット(再実行できるなら)。または RI / Savings Plans
一時的に増える(ピーク)オンデマンド。確実に起動したいならキャパシティ予約もスポット
「定常か一時的か」と「中断できるか」の 2 軸で購入オプションを選ぶ
「定常か一時的か」と「中断できるか」の 2 軸で購入オプションを選ぶ

たとえば「毎晩 7 時間かかり、10 時間以内に終わらせる必要があるバッチを RI で回している。月末だけ処理量が増えて容量が足りない。処理は途中で止められない」という状況を考えます。

  • 増えるのは月末だけなので、追加の RI や RI のサイズアップは、残りの期間にとって余分な約束になる
  • 処理は止められないので、中断されうるスポットには載せられない
  • したがって、増えた分はオンデマンドで賄うのが、約束も中断もなく費用も使った分だけになる選び方になる

月末に確実に起動できる枠まで確保したい場合は、キャパシティ予約を組み合わせる選択肢もあります。ただし、予約中は使っていなくても課金されること、将来の日付を指定する予約には約束の期間があり、最小の規模(32 vCPU 分以上)が決まっていることに注意が必要です。

クラウドおさる

「一番安いから」とスポットを選ぶと、止められない処理では外すのでござる。安さの前に「途中で取り上げられて困るかどうか」を先に確かめるのが筋でござるぞ。

スポットインスタンスの中断

スポットインスタンスは、次のような理由で中断されることがあります。

理由内容
キャパシティAWS がキャパシティを必要としたとき。ホストのメンテナンスなどでも起こりうる
料金上限料金を指定していて、スポット料金がそれを超えたとき
制約起動グループなどの制約が満たされなくなったとき

中断されるときは、停止または終了の 2 分前に中断通知が出ます。通知は EventBridge のイベント(EC2 Spot Instance Interruption Warning)や、インスタンスメタデータの spot/instance-action で受け取れます。ただし通知はベストエフォートで、休止で中断される場合は 2 分前の通知がありません。

2 分の猶予で後片付けはできても、何時間もかかる処理を最後まで終わらせることはできません。スポットに向くのは、データ分析やバッチの中でも「途中で止まっても、やり直せる・続きから再開できる」ように作られた処理です。

Auto Scaling グループでオンデマンドとスポットを混ぜる

1 つの Auto Scaling グループの中で、オンデマンドインスタンスとスポットインスタンスを混ぜて起動できます(混合インスタンスグループ)。決めるのは主に次の 3 つです。

設定意味
オンデマンドのベース容量まずオンデマンドで起動する台数。ここまではスポットを起動しない
ベース容量を超える分のオンデマンドの割合ベースを超えた分を、オンデマンドとスポットで何 % ずつにするか(0〜100)
スポットの配分戦略どのスポットのプールから起動するか。使い始めには、中断されにくく価格もできるだけ低いプールを選ぶ「価格とキャパシティの最適化」(price-capacity-optimized。コンソールの表記は「料金キャパシティ最適化」)が推奨されている

たとえばベース容量を 2、ベースを超える分のオンデマンドを 0% にすると、「止まると困る最低 2 台はオンデマンド、スケールアウトで増える分はすべてスポット」という構成になります。割合の計算で端数が出たときは、オンデマンドの側に切り上げられます。

混合インスタンスグループを作ると、既定ではオンデマンドだけで起動します。スポットを使うには、オンデマンドの割合を下げる必要があります。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド5 ステップ画面 4 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

購入オプションごとの画面を、購入・作成の手前まで操作します。この実践では、リザーブドインスタンスの購入、キャパシティ予約の作成、Auto Scaling グループの作成のいずれも行いません。

前提条件

  • リージョン: ap-northeast-1(東京)
  • EC2・Auto Scaling の画面を開ける IAM ユーザーまたはロールでコンソールにログイン済みであること

以下のリソースが作成済みであることを前提とします(起動テンプレート自体には料金はかかりません)。

リソース種別リソース名内容作り方の参考
起動テンプレートpo-lab-templateAmazon Linux 2023・t3.micro。Auto Scaling グループの作成画面を進めるために使うEC2 Auto Scaling で落ちても自動で戻る Web サーバーを作る ※起動テンプレートの作成まで

リザーブドインスタンスは、購入を確定するとキャンセルできません。キャパシティ予約は、作成すると使っていなくても課金されます。この記事の手順では、どちらも確定ボタンを押さずに画面を閉じます。

手順 1: リザーブドインスタンスの購入画面で候補と料金を見る

AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。

上部の検索バーに EC2 と入力し、「EC2」を選択します。左側ナビゲーションの「インスタンス」→「リザーブドインスタンス」を選択し、「リザーブドインスタンスの購入」をクリックします。

以下を指定して「検索」をクリックします。

  • 提供クラス: スタンダード
  • プラットフォーム: Linux/UNIX(デフォルト)
  • テナンシー: デフォルト(デフォルト)
  • インスタンスタイプ: t3.micro
  • 期間: 1 ~ 12 か月(もう一方の選択肢は 12 ~ 36 か月)
  • お支払い方法: 前払いなし

その他の項目はデフォルトのままにします。

リザーブドインスタンスの購入画面(条件を指定して検索し、候補と料金が表示された状態)
リザーブドインスタンスの購入画面(条件を指定して検索し、候補と料金が表示された状態)

検索結果に、期間(12 ヶ月)・支払いオプションごとの前払い料金、実質レート、1 時間あたりのレートが並びます。ここでは「カートに入れる」はクリックせず、「キャンセル」で画面を閉じます。RI は「この構成をこの期間使い続ける」約束で、一時的な需要に対して買うものではないことが、入力項目からも分かります。

手順 2: スポットの料金履歴を見る

左側ナビゲーションの「インスタンス」→「スポットリクエスト」を選択し、「料金設定履歴」をクリックします。「スポットインスタンスの料金設定履歴」の画面が開くので、以下を指定します。

  • グラフ: アベイラビリティーゾーン(デフォルト)
  • インスタンスタイプ: t3.micro(デフォルトは別のタイプなので選び直します)
  • プラットフォーム: Linux/UNIX
  • 日付範囲: 3 か月(デフォルトは 1 週間)
スポットインスタンスの料金設定履歴(AZ ごとの料金の推移と平均料金)
スポットインスタンスの料金設定履歴(AZ ごとの料金の推移と平均料金)

AZ ごとにスポット料金が上下していることと、画面下部に表示されるオンデマンド料金・AZ ごとの平均料金・節約率を確認します。料金履歴は過去 90 日分まで表示できます。確認したら画面を閉じます。ここでスポットインスタンスの起動はしません。

手順 3: キャパシティ予約の作成画面で入力する

左側ナビゲーションの「インスタンス」→「キャパシティーの予約」を選択します。予約がまだ無いときは説明の画面が表示されるので、「キャパシティ予約タイプ」で「オンデマンドキャパシティ予約を作成」が選ばれていることを確認して「開始方法」をクリックします。予約があるときは「キャパシティ予約の作成」をクリックします。

「オンデマンドキャパシティ予約を作成」の画面で、以下を入力します。

  • インスタンスタイプ: t3.micro
  • プラットフォーム: Linux/UNIX
  • アベイラビリティーゾーン: ap-northeast-1a
  • テナンシー: デフォルト
  • 合計キャパシティ: 2 インスタンス
  • キャパシティ予約の開始: 今すぐ
  • キャパシティ予約の終了: 手動(デフォルトは 特定の時間。「手動でキャンセルするまでキャパシティ予約は継続されます」と表示されます)
  • インスタンスの適格性: オープン(デフォルト)
キャパシティ予約の作成画面(インスタンスの詳細と予約の詳細を入力した状態)
キャパシティ予約の作成画面(インスタンスの詳細と予約の詳細を入力した状態)

入力項目に、期間や支払いオプションが無いことを確認します。キャパシティ予約は「どの AZ に、どのインスタンスを、何台分の枠を取るか」だけを決めるもので、割引の約束ではありません。ここでは「作成」はクリックせず、「キャンセル」で画面を閉じます。

クラウドおさる

RI の画面には期間と支払いの欄があり、キャパシティ予約の画面には AZ と台数の欄しかないでござる。画面の欄を見比べると、値引きと場所取りの違いがそのまま見えるのでござるな。

手順 4: Auto Scaling グループの作成画面でオンデマンドとスポットの割合を決める

左側ナビゲーションの「Auto Scaling」→「Auto Scaling グループ」を選択し、「Auto Scaling グループを作成する」をクリックします。

  • Auto Scaling グループ名: po-lab-asg
  • 起動テンプレート: po-lab-template

「次へ」をクリックします。「インスタンス起動オプション」の画面で、「インスタンスタイプの要件」の「起動テンプレートを上書きする」をクリックし、「手動でインスタンスタイプを追加する」を選びます。t3.micro と、t3a.micro などの近いインスタンスタイプが自動で並びます。ネットワーク(VPC・サブネット)は、作成しないのでここでは選ばなくて構いません。

続けて「インスタンス配布オプション」の「インスタンスの分散」で、以下を設定します。

  • 「オンデマンドベース容量を含める」にチェックを入れ、ベース容量に 2 を入力
  • ベース容量を超える分: オンデマンド 0 %(スポットは自動で 100 % になります)
  • 配分戦略: 料金キャパシティ最適化 (推奨)(デフォルト)
Auto Scaling グループの作成画面(オンデマンドのベース容量 2、超える分はスポット 100% を設定した状態)
Auto Scaling グループの作成画面(オンデマンドのベース容量 2、超える分はスポット 100% を設定した状態)

この設定では、最初の 2 台がオンデマンド、それを超える分がスポットで起動されます。ここでは「次へ」以降に進まず、「キャンセル」で作成を中止します。Auto Scaling グループは作成しません。

クラウドおさる

「月末だけ増える・止められない」ならオンデマンド、「ずっと動く」なら RI や Savings Plans、「止まってもやり直せる」ならスポットでござる。似た選択肢が並んだら、増え方と止められるかどうかの 2 つを先に確かめるのが近道でござるな。

まとめ

ワークロード選ぶもの理由
定常的に動き、止まると困るRI または Savings Plans長く使う約束で割引を得る
一時的に増え、止まると困るオンデマンド約束も中断もなく、使った分だけ払う
確実に起動できる枠が必要キャパシティ予約(割引はリージョンの RI・Savings Plans と組み合わせる)特定の AZ の枠を確保する。使っていなくても課金される
止まってもやり直せるスポット大幅に安いが、2 分前の通知で中断されることがある
最低限はオンデマンド、増える分は安くAuto Scaling の混合インスタンスグループオンデマンドのベース容量と、超える分のスポットの割合で組み合わせる
  • 購入オプションは「定常か一時的か」「中断できるかできないか」の 2 軸で選ぶ
  • リージョンの RI と Savings Plans は請求上の割引、キャパシティ予約は起動できる枠の確保で、目的が違う(ゾーンの RI は割引と枠の確保の両方)
  • RI は購入後にキャンセルできない。一時的な需要に合わせて買い足すと、残りの期間が余分な約束になる
  • スポットの中断通知は 2 分前でベストエフォート。長時間止められない処理には向かない
  • 混合インスタンスグループは既定ではオンデマンドだけ。スポットを使うにはオンデマンドの割合を下げる

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次