起動テンプレートを使ってお手軽にスポットインスタンスを起動する

2020.07.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、なかはらです。AWSでよく利用されているサービスとしてEC2がありますが、LinuxやWindowsサーバの検証でインスタンスの作成ウィザードからパラメータを設定してぽちぽち起動する手間、長時間のインスタンスの稼働で高額な請求となってしまいます。検証であればスポットインスタンスを使うことで安価になりますし、インスタンスを作成する設定情報をテンプレートにしてくれる起動テンプレートを使ってサクッと起動することが可能です。スポットリクエストを設定した起動テンプレートを作成し、インスタンスを起動してみます。

目次

起動テンプレート、スポットインスタンスとは

起動テンプレートの説明は、ユーザガイドからの引用です。

インスタンスを起動するための設定情報を含む起動テンプレートを作成できます。起動テンプレートにより起動パラメータを格納でき、インスタンスを起動するたびに指定する必要がなくなります。たとえば、AMI ID やインスタンスタイプ、通常インスタンスの起動に使用しているネットワーク設定を起動テンプレートに含めることができます。Amazon EC2 コンソール、AWS SDK、またはコマンドラインツールを使用してインスタンスを起動する場合、使用する起動テンプレートを指定できます。

簡単に言うとインスタンスの作成ウィザードから設定していたパラメータをテンプレートにすることができます。

また、スポットインスタンスの説明もユーザガイドからの引用です。

スポットインスタンス は、オンデマンド価格より低価で利用できる未使用の EC2 インスタンスです。スポットインスタンス では未使用の EC2 インスタンスを静止状態割引でリクエストできるため、Amazon EC2 のコストを大幅に削減できます。

起動テンプレートにスポットリクエスト設定を含めることでサクッと安価にインスタンスを起動できるようになります。

事前準備

今回はAmazon Linux 2 AMI で起動し、SSHでアクセスできるようにする為、事前に以下のリソースを作成してください。

  • サブネット(Public)
  • キーペア
  • セキュリティグループ (インバウンドルールにタイプをSSH、ソースを設定)

設定

マネジメントコンソールから設定していきます。

EC2サービスの起動テンプレートから「起動テンプレートを作成」をクリックします。

起動テンプレート名を入力します。

AMI、インスタンスタイプ、キーペアを選択します。

  • AMI:Amazon Linux 2 AMI (HVM), SSD Volume Type
  • インスタンスタイプ:m5.large
  • キーペア (ログイン):事前準備で作成したキーペア

ネットワーク設定では、VPCを選択します。

リソースタグは、起動テンプレートから作成するリソース(インスタンス、ボリューム)にタグを付与できます。例としてインスタンスにNameタグを付与します。

ネットワークインターフェイスでは、インスタンスにアタッチするネットワークインターフェイスのサブネット、セキュリティグループを設定します。どちらも事前準備で作成したものを選択してください。

高度な詳細では、スポットインスタンスをリクエストにチェックしてください。最高料金は設定しなくてもオンデマンド料金を上限としてスポットインスタンスがリクエストされます。2020/7/8、ap-northeast-1aのm5.largeの1時間あたりのスポット Linuxの料金は0.0349 USDでした。オンデマンド Linuxの0.124 USDより安い!

ユーザーデータを設定しておくとインスタンス起動時に記述したスクリプトが実行されます。例としてタイムゾーン、ロケーション、ホスト名、パッケージの最新化をするスクリプトを記述しています。最後に「起動テンプレートを作成」をクリックします。


#!/bin/bash

#settings timezone
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
cp -p /etc/sysconfig/clock /etc/sysconfig/clock.org ; sudo sed -i 's/\"UTC\"/\"Asia\/Tokyo\"/g' /etc/sysconfig/clock

#settings locale and keymap
localectl set-locale LANG=ja_JP.utf8
localectl set-keymap jp106

#settings hostname
hostnamectl set-hostname nspot-`date '+%Y%m%d%H%M%S'`

#update
yum -y update
reboot

起動してみた

起動テンプレートを使ってインスタンスを起動していきます。作成した起動テンプレートを選択し、「アクション」から「テンプレートからインスタンスを起動」をクリックします。

スクロールした画面下にある「テンプレートからインスタンスを起動」をクリックします。

起動テンプレートで設定したNameタグやインスタンスタイプでインスタンスが作成されています。

スポットリクエスト画面で作成されたインスタンスIDが確認できます。

まとめ

起動テンプレートを使えば、インスタンスの設定情報を決めておくことができるのでお手軽に起動できます。また、スポットインスタンスをデフォルトとする起動テンプレートを用意しておけば安価にサーバの検証ができます。是非活用してみてください。