はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- あると良いオンデマンドで EC2 インスタンスを起動した経験
※ このハンズオンは すべてコンソールだけで完結します。サーバーへのログイン(SSH)は使いません。
※ スポットインスタンスは無料利用枠の対象外です。起動するとオンデマンドより安い料金ですが課金されます(詳しくは末尾のコスト注記)。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
学習や検証、止まっても大きな問題にならないバッチ処理などを動かす場面では、できるだけコストを抑えたいものです。AWS には、その時点で使われていない余剰のコンピューティングキャパシティを安く借りられる「スポットインスタンス」という購入方法があります。
同じインスタンスタイプ・同じ性能のサーバーを、通常の「オンデマンド」よりずっと安い料金で使えますが、その代わりにAWS がそのキャパシティを必要としたとき、短い通知のあとでインスタンスが中断されることがあります。今回はスポットインスタンスを1台起動し、価格の違いと、コンソール上での見え方の違いを確認します。
スポットは常にオンデマンドより安いの?
はい、仕組みとしてオンデマンドより安い価格で提供されます。ただし価格は需要に応じて変動するため、どれくらい安くなるかはタイミングや条件によって変わります。起動前にスポット料金の履歴を確認しておくと、現在の値ごろ感がつかめます。
中断されたら、ディスクの中身は消えてしまうの?
いいえ、今回のような一般的な構成(EBSをルートボリュームに使う構成)では、中断されてもEBSボリューム自体は基本的に残ります。ただし、重要なデータを長く保持したい場合は、外部のストレージに保存しておくなど別の備えも考えておくとより安全です。
スポット料金の履行を確認したうえで、EC2 インスタンスをスポットインスタンスとして1台起動し、「スポットリクエスト」がコンソール上で履行(fulfilled)された状態になっていることを確認する。
つくる構成
同じインスタンスタイプを、オンデマンドで借りる場合とスポットで借りる場合の料金イメージです。
通常の料金
余剰キャパシティの料金
※ 割引の幅はインスタンスタイプ・リージョン・時間帯によって変動します。図はイメージです。
要件
以下の要件を満たし、スポットインスタンスの起動から確認までをひととおり体験してください。
| No | 要件 |
|---|---|
| 1 | リージョンは「東京(ap-northeast-1)」を使用する。 |
| 2 | 起動する前に、使うインスタンスタイプのスポット料金履行を確認する。 |
| 3 | EC2 インスタンスを1台、購入オプションで「スポットインスタンスのリクエスト」を選んで起動する(インスタンスタイプは自由、例:t3.micro)。 |
| 4 | 「スポットリクエスト」のコンソールで、リクエストの状態が「履行済み(fulfilled)」になっていることを確認する。 |
| 5 | 起動したインスタンスの詳細画面で、「購入オプション」がスポットになっていることを確認する。 |
構築の進め方
「価格を確認する → スポットで起動する → コンソールで確認する」という順番で進めます。
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
スポット料金履行を確認する
EC2 コンソールの左メニュー「インスタンス」→「スポットリクエスト」を開き、「価格履行を表示」を選びます。使いたいインスタンスタイプ(例:
t3.micro)とアベイラビリティーゾーンを指定し、直近の価格の動きを確認します。価格は常に動いているスポット料金はリアルタイムの需要に応じて変動します。今見ている価格は「今この瞬間の目安」であり、起動後に値上がり・値下がりすることもあります。
-
インスタンスを起動し、購入オプションでスポットを選ぶ
「インスタンスを起動」から、名前を自由に決め(例:
spot-demo)、AMI にAmazon Linux 2023、インスタンスタイプを自由に選びます(例:t3.micro)。「高度な設定」の中にある「購入オプション」で「スポットインスタンスのリクエスト」にチェックを入れます。最大価格はデフォルトのままでよい最大価格の設定はデフォルト(オンデマンド価格が上限)のままで構いません。学習目的であれば、細かく調整する必要はありません。
-
起動し、しばらく待つ
「インスタンスを起動」を押します。スポットの場合、すぐに起動するとは限らず、容量の確保にすこし時間がかかることがあります。
-
「スポットリクエスト」の状態を確認する
EC2 コンソールの「スポットリクエスト」一覧を開き、作成したリクエストの「状態」を確認します。「履行済み(fulfilled)」になっていれば、インスタンスが正常に起動しています。
-
インスタンス詳細で購入オプションを確認する
「インスタンス」一覧から
spot-demoを選び、詳細画面の「購入オプション」の項目を確認します。「spot」と表示されていれば、スポットインスタンスとして起動できています。これがゴール「履行済み」のスポットリクエストと、「spot」と表示される購入オプション——この2つを確認できたら、このハンズオンの目的は達成です。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。
「履行されず、ステータスが進まない」
その時点・そのアベイラビリティーゾーンで、選んだインスタンスタイプのスポットキャパシティが一時的に不足している可能性があります。インスタンスタイプを変える、または別のアベイラビリティーゾーンを試すと解決することがあります。
「起動ウィザードのどこにスポットの設定があるかわからない」
購入オプションの設定は、起動ウィザードの「高度な詳細」セクションの中にあります。画面の下のほうにあるため、見落としやすい場所です。一度見つけたら、設定項目の位置を覚えておきましょう。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。EC2 コンソールを開いて、次を順に確かめましょう。
- 「スポットリクエスト」一覧に、作成したリクエストが「履行済み(fulfilled)」として表示されている。
- 「インスタンス」一覧に
spot-demoがあり、状態が「実行中(Running)」になっている。 - インスタンス詳細の「購入オプション」が「spot」と表示されている。
- 「価格履行」のグラフで、確認したスポット料金がオンデマンド料金より低い水準であることが見て取れる。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- どんな種類の処理がスポットインスタンスに向いていて、どんな処理が向いていないでしょうか。
ヒント
中断されても再実行できる処理(バッチ処理、検証用の一時的な環境など)と、中断されると困る処理(常時稼働が必須のWebサーバーなど)を比べてみましょう。「中断されたときに何が困るか」という観点がヒントです。 - スポットインスタンスは中断の前に短い通知(数分程度)が来る仕組みになっています。アプリケーション側では、この通知をどう活用できるでしょうか。
ヒント
通知が来た時点で、処理中のデータを安全な場所に保存したり、別のインスタンスに処理を引き継いだりする準備ができれば、中断による影響を小さくできます。「事前に分かっていれば何ができるか」を考えてみましょう。 - 1つのインスタンスタイプ・1つのアベイラビリティーゾーンだけでスポットを使う場合と、複数のインスタンスタイプやアベイラビリティーゾーンを組み合わせて使う場合では、中断のリスクにどんな違いが出るでしょうか。
ヒント
特定のインスタンスタイプ・アベイラビリティーゾーンだけに集中していると、そこで需要が高まったときにまとめて中断される可能性があります。選択肢を広げておくことが、リスクの分散にどうつながるか考えてみましょう。
後片づけ
スポットインスタンスは、インスタンスを終了するだけでなく、リクエスト自体のキャンセルも必要です。
- スポットリクエストをキャンセルする:「スポットリクエスト」一覧で対象のリクエストを選び、「アクション」→「リクエストのキャンセル」を選びます。
- インスタンスを終了する:「インスタンス」一覧で
spot-demoを選び、「インスタンスの状態」→「インスタンスを終了(Terminate)」を選びます。
インスタンスを終了しただけでは、リクエストが残ることがある
スポットリクエストの設定によっては、インスタンスを終了しても、リクエスト自体が「再度満たそうとする」状態のまま残り、新しいインスタンスが意図せず起動してしまうことがあります。後片づけでは、先にリクエストをキャンセルしてからインスタンスを終了する順番がおすすめです。
コストに関する注意: スポットインスタンスは、起動中の時間に対してスポット料金で課金されます。オンデマンドより安い料金ですが、無料利用枠の対象にはなりません。価格は変動するため、起動中に料金が変わることもあります。インスタンスに付くディスク(EBS ボリューム)にも別途料金がかかります。短時間で終えれば少額にとどまりますが、後片づけ(リクエストのキャンセルとインスタンスの終了)を忘れると課金が続きます。最新の料金は AWS の公式料金ページで確認してください。