← ハンズオン一覧に戻る

AWS Hands-on / Compute

同じサーバーを、もっと安く借りる

EC2 の購入オプションから「スポットインスタンス」を選んで起動し、オンデマンドとの価格差を確認します。AWS の使われていない余剰キャパシティを借りることで安くなる仕組みと、その代わりに短い通知で中断されることがある、という特徴の両方を体験します。

● Lv.2 基本的なリソースを作れる人 ⏱ 所要 20〜35 分 コンソールのみで完結
01 — Prerequisites

はじめる前に

  • 必須AWS アカウントを持っていること
  • 必須マネジメントコンソールにサインインできること
  • あると良いオンデマンドで EC2 インスタンスを起動した経験

※ このハンズオンは すべてコンソールだけで完結します。サーバーへのログイン(SSH)は使いません。

※ スポットインスタンスは無料利用枠の対象外です。起動するとオンデマンドより安い料金ですが課金されます(詳しくは末尾のコスト注記)。

02 — References

参照する公式ドキュメント

手順に迷ったときや、用語の意味を確かめたいときに開きましょう。

※ リンク切れの場合は、ページタイトルで検索してください。

03 — Background

背景・シナリオ

学習や検証、止まっても大きな問題にならないバッチ処理などを動かす場面では、できるだけコストを抑えたいものです。AWS には、その時点で使われていない余剰のコンピューティングキャパシティを安く借りられる「スポットインスタンス」という購入方法があります。

同じインスタンスタイプ・同じ性能のサーバーを、通常の「オンデマンド」よりずっと安い料金で使えますが、その代わりにAWS がそのキャパシティを必要としたとき、短い通知のあとでインスタンスが中断されることがあります。今回はスポットインスタンスを1台起動し、価格の違いと、コンソール上での見え方の違いを確認します。

スポットは常にオンデマンドより安いの?

はい、仕組みとしてオンデマンドより安い価格で提供されます。ただし価格は需要に応じて変動するため、どれくらい安くなるかはタイミングや条件によって変わります。起動前にスポット料金の履歴を確認しておくと、現在の値ごろ感がつかめます。

中断されたら、ディスクの中身は消えてしまうの?

いいえ、今回のような一般的な構成(EBSをルートボリュームに使う構成)では、中断されてもEBSボリューム自体は基本的に残ります。ただし、重要なデータを長く保持したい場合は、外部のストレージに保存しておくなど別の備えも考えておくとより安全です。

Goal

スポット料金の履行を確認したうえで、EC2 インスタンスをスポットインスタンスとして1台起動し、「スポットリクエスト」がコンソール上で履行(fulfilled)された状態になっていることを確認する。

04 — Architecture

つくる構成

同じインスタンスタイプを、オンデマンドで借りる場合とスポットで借りる場合の料金イメージです。

オンデマンド

通常の料金

基準 100%
いつでも借りられるが、料金は変わらず一定
スポット

余剰キャパシティの料金

大幅に割安(例)
✓ 安いが、短い通知で中断される場合がある

※ 割引の幅はインスタンスタイプ・リージョン・時間帯によって変動します。図はイメージです。

05 — Requirements

要件

以下の要件を満たし、スポットインスタンスの起動から確認までをひととおり体験してください。

No要件
1リージョンは「東京(ap-northeast-1)」を使用する。
2起動する前に、使うインスタンスタイプのスポット料金履行を確認する。
3EC2 インスタンスを1台、購入オプションで「スポットインスタンスのリクエスト」を選んで起動する(インスタンスタイプは自由、例:t3.micro)。
4「スポットリクエスト」のコンソールで、リクエストの状態が「履行済み(fulfilled)」になっていることを確認する。
5起動したインスタンスの詳細画面で、「購入オプション」がスポットになっていることを確認する。
06 — Steps

構築の進め方

「価格を確認する → スポットで起動する → コンソールで確認する」という順番で進めます。

  1. マネジメントコンソールにサインインし、リージョンを合わせる

    ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。

  2. スポット料金履行を確認する

    EC2 コンソールの左メニュー「インスタンス」→「スポットリクエスト」を開き、「価格履行を表示」を選びます。使いたいインスタンスタイプ(例:t3.micro)とアベイラビリティーゾーンを指定し、直近の価格の動きを確認します。

    価格は常に動いている

    スポット料金はリアルタイムの需要に応じて変動します。今見ている価格は「今この瞬間の目安」であり、起動後に値上がり・値下がりすることもあります。

  3. インスタンスを起動し、購入オプションでスポットを選ぶ

    「インスタンスを起動」から、名前を自由に決め(例:spot-demo)、AMI にAmazon Linux 2023、インスタンスタイプを自由に選びます(例:t3.micro)。「高度な設定」の中にある「購入オプション」「スポットインスタンスのリクエスト」にチェックを入れます。

    最大価格はデフォルトのままでよい

    最大価格の設定はデフォルト(オンデマンド価格が上限)のままで構いません。学習目的であれば、細かく調整する必要はありません。

  4. 起動し、しばらく待つ

    「インスタンスを起動」を押します。スポットの場合、すぐに起動するとは限らず、容量の確保にすこし時間がかかることがあります。

  5. 「スポットリクエスト」の状態を確認する

    EC2 コンソールの「スポットリクエスト」一覧を開き、作成したリクエストの「状態」を確認します。「履行済み(fulfilled)」になっていれば、インスタンスが正常に起動しています。

  6. インスタンス詳細で購入オプションを確認する

    「インスタンス」一覧から spot-demo を選び、詳細画面の「購入オプション」の項目を確認します。「spot」と表示されていれば、スポットインスタンスとして起動できています。

    これがゴール

    「履行済み」のスポットリクエストと、「spot」と表示される購入オプション——この2つを確認できたら、このハンズオンの目的は達成です。

07 — Pitfalls

つまずきポイント

初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。

Pitfall 01 — スポットリクエストの状態が「価格不足」のまま進まない

「履行されず、ステータスが進まない」

その時点・そのアベイラビリティーゾーンで、選んだインスタンスタイプのスポットキャパシティが一時的に不足している可能性があります。インスタンスタイプを変える、または別のアベイラビリティーゾーンを試すと解決することがあります。

Pitfall 02 — 購入オプションの設定場所が見つからない

「起動ウィザードのどこにスポットの設定があるかわからない」

購入オプションの設定は、起動ウィザードの「高度な詳細」セクションの中にあります。画面の下のほうにあるため、見落としやすい場所です。一度見つけたら、設定項目の位置を覚えておきましょう。

08 — Checklist

完了チェック

要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。EC2 コンソールを開いて、次を順に確かめましょう。

  • 「スポットリクエスト」一覧に、作成したリクエストが「履行済み(fulfilled)」として表示されている。
  • 「インスタンス」一覧に spot-demo があり、状態が「実行中(Running)」になっている。
  • インスタンス詳細の「購入オプション」「spot」と表示されている。
  • 「価格履行」のグラフで、確認したスポット料金がオンデマンド料金より低い水準であることが見て取れる。
09 — Think

考えてみよう

手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。

  1. どんな種類の処理がスポットインスタンスに向いていて、どんな処理が向いていないでしょうか。
    ヒント
    中断されても再実行できる処理(バッチ処理、検証用の一時的な環境など)と、中断されると困る処理(常時稼働が必須のWebサーバーなど)を比べてみましょう。「中断されたときに何が困るか」という観点がヒントです。
  2. スポットインスタンスは中断の前に短い通知(数分程度)が来る仕組みになっています。アプリケーション側では、この通知をどう活用できるでしょうか。
    ヒント
    通知が来た時点で、処理中のデータを安全な場所に保存したり、別のインスタンスに処理を引き継いだりする準備ができれば、中断による影響を小さくできます。「事前に分かっていれば何ができるか」を考えてみましょう。
  3. 1つのインスタンスタイプ・1つのアベイラビリティーゾーンだけでスポットを使う場合と、複数のインスタンスタイプやアベイラビリティーゾーンを組み合わせて使う場合では、中断のリスクにどんな違いが出るでしょうか。
    ヒント
    特定のインスタンスタイプ・アベイラビリティーゾーンだけに集中していると、そこで需要が高まったときにまとめて中断される可能性があります。選択肢を広げておくことが、リスクの分散にどうつながるか考えてみましょう。
10 — Clean up

後片づけ

スポットインスタンスは、インスタンスを終了するだけでなく、リクエスト自体のキャンセルも必要です。

  1. スポットリクエストをキャンセルする:「スポットリクエスト」一覧で対象のリクエストを選び、「アクション」→「リクエストのキャンセル」を選びます。
  2. インスタンスを終了する:「インスタンス」一覧で spot-demo を選び、「インスタンスの状態」→「インスタンスを終了(Terminate)」を選びます。
Caution — リクエストのキャンセルを忘れない

インスタンスを終了しただけでは、リクエストが残ることがある

スポットリクエストの設定によっては、インスタンスを終了しても、リクエスト自体が「再度満たそうとする」状態のまま残り、新しいインスタンスが意図せず起動してしまうことがあります。後片づけでは、先にリクエストをキャンセルしてからインスタンスを終了する順番がおすすめです。

コストに関する注意: スポットインスタンスは、起動中の時間に対してスポット料金で課金されます。オンデマンドより安い料金ですが、無料利用枠の対象にはなりません。価格は変動するため、起動中に料金が変わることもあります。インスタンスに付くディスク(EBS ボリューム)にも別途料金がかかります。短時間で終えれば少額にとどまりますが、後片づけ(リクエストのキャンセルとインスタンスの終了)を忘れると課金が続きます。最新の料金は AWS の公式料金ページで確認してください。