【自動化&節約】AWSのEC2スケジューラーで費用を月10$程度に節約してGRCを毎日自動で使う方法

AWSを節約してGRCを使う

順位チェックツールGRCを使ってますか?

検索順位を気にする仕事をしているので私も使っています。基本的にWindowsのソフトですがParallelsDesktopやwineを使えばmacでも利用が可能です。私も以前はmacにwineをインストールしてGRCを使ってました。

しかし、毎日手動でGRCを回すのは面倒だし忘れてしまう日もあったり出張や旅行の日は記録できなくなったりしてしまうのでVPS環境にしたいと思って、4月の終わり頃からAWS(アマゾンウェブサービス)のサーバーを使ってGRCを毎日自動で回すことにしました。

時間あたりで利用料金がかかるAWSを1ヶ月ほど24時間フル稼働で使っていたのですが、サーバー料金がもったいないと思ってスケジューラーを導入することにしました。

本記事はスケジューラー使用前後の料金推移と設定方法の説明になります。

AWS(アマゾンウェブサービス)

検索順位チェックツールGRC

今までAWSを使ったこと無い方ですと、インスタンスによっては1年間無料枠があるので最初は24時間起動しっぱなしでも問題ないですね。

ということで本記事は無料枠が終了してAWSの費用を節約したい方が対象になります。

EC2スケジューラー導入前後のAWSサーバー費用

AWSサーバーコスト推移

EC2スケジューラーの仕様前後のサーバーコスト推移です。5月末にスケジューラーの設定を行いました。
グラフでみると概ねコストが半分になっているのがわかります。

私が使用しているインスタンスはt2.microという下から2番目に安いプランで、それにwindows server 2012 R2をインストールしてGRCを使っています。

EC2スケジューラー設定前

5月は24時間稼働させてました。
1日あたり$0.6で5月の月間請求額は$20.08でした。

AWSの5月の請求書

これはAWSの5月の請求書です。

EC2スケジューラー設定後

5月末にスケジューラーの設定をした後は費用が約半分になりました。
6月の請求額は$9.74ですので、1日あたり$0.32ほどです。

AWSの6月の請求書

AWSは1時間あたり○○$という料金体系なので、毎日3時間しか稼働させないスケジューリングだったらもっと安くなるのかと予想していたのですが、固定IPの料金なども加算されて結果は24時間稼働時の約半額でした。

固定IPの利用料

ちなみに上記料金の内、固定IPの料金は$3.11でした。
固定IPを使わなければ$6.63で済みます。

【余談】 t2.nanoは全く使えなかった

余談になりますが、基本利用料が安いインスタンス「t2.nano」は全く使えませんでした。
当初、GRC回すだけだから一番安いプランでいいかと思って設定をし始めたのですが、ソフトのインストールも途中で止まってしまったりと、20年前のPCを使っている気分でした。

AWSインスタンスプライスリスト

windowsをインストールした後にchromeやdropboxをインストールしようとしたのですが、途中で止まってしまいました。

1時間あたりの料金がmicroの半分なのでGRCがインストールできればよかったのですがそこまでたどり着けずに諦めました。

AWSをスケジューリング起動してGRCを毎日自動で回す方法

さて、ここからが本題です。

全体の流れは下記のとおりです。

  1. EC2スケジューラーを設定する(ほぼクリックだけで完了)
  2. インスタンスのタグを編集して適用する時間を設定する(コピペでOK)
  3. 固定IPを取得する(必須ではないが推奨 簡単に設定できる)
  4. windowsの自動サインインを設定する(バージョンによって違うようで少しややこしい)
  5. GRCの自動起動と自動実行、バックアップを設定する(簡単)

それではひとつずつ見ていきましょう。

EC2スケジューラーの設定

EC2スケジューラーについては下記のページを参考にしました。

インスタンスのスケジューラー

スケジューラーを作成するテンプレートを組み込んだURLがあるので貼っておきます。AWSにあらかじめ用意してあるテンプレートを使うので下記のリンクをクリックして始めると楽です。

CloudFormation – スタック

参考にしたページのUIが旧バージョンなので新バージョンのUIの作成手順の画像を貼っておきます。

EC2スケジューラー作成手順1

上記のURLをクリックした場合、赤枠のテンプレートURLが入力された状態になります。

EC2スケジューラー作成手順2

スタックの詳細を設定する画面ですが初期値でOKです。
途中、赤枠部分で起動時間とシャットダウン時間、実行曜日を設定する箇所がありますが初期値でOKです。
起動時間などは後ほどインスタンスのタグ編集で指定します

といわけで何もせずに「次へ」をクリック

EC2スケジューラー作成手順3

スタックオプションの設定も何もせず「次へ」をクリック

EC2スケジューラー作成手順4

確認画面では画面最下部の「AWS CloudFormationによってIAMリソースが作成される場合があることを承認します。」にチェックを入れて「スタックの作成」をクリック。

EC2スケジューラー作成手順5

そうすると上記のような画面に移行されます。
作成されるのに数分かかるようなので画面移行直後は「CREATE_IN_PROGRESS」となっているかと思います。

しばらくすると「CREATE_COMPLETE」に変わります。

インスタンスのタグの編集

次にインスタンスタグの編集をします。

インスタンスのタグの編集1

画面左上のawsのロゴをクリックして管理画面のトップに戻ってEC2をクリック。

インスタンスのタグの編集2

実行中のインスタンスをクリック

インスタンスのタグの編集3

実行中でも実行していないものでも作成したインスタンスの一覧が表示されますのでスケジューリングしたいインスタンスにチェックを入れて「アクション」→「インスタンスの設定」→「タグの追加/編集」をクリック。

インスタンスのタグの編集4

上記のようなポップアップウィンドが表示されますので、下記のようにキーと値を入力します。
(※1行目のNameは今回関係ないので気にしなくてOKです。)

設定するキーと値
キー:scheduler:ec2-startstop
値:0100;0400;utc;all

値で起動時間と終了時間と起動曜日を設定します。
時間はUTC(世界標準時)を使います
日本時間はUTCより9時間進んでます。

私の場合、GRCは2時間くらいで終わります。
なので、毎日午前10時に起動して午後1時(13時)にシャットダウンするように設定しています。

10時からGRCを回して2時間くらいで終わるのですが、お昼ごはんを食べながらAWSにアクセスして順位を眺めたりするので13時まで起動してます。
GRCを見たい時にawsの管理画面から手動でインスタンスを起動してもいいのですが、それが面倒なのでこのような時間を設定してます。

日本時間をUTCに変換する時に下記サイトで時間を確認しました。

日本時間をUTCに変換

これでEC2インスタンスのスケジューリング(自動起動と自動シャットダウン)は完了です。

固定IPを取得する

通常、インスタンスは起動するたびにIPアドレスが変わります

必須ではないのですが、リモートアクセスする際に毎回IPを入力し直すのが面倒な人は固定IPを取得した方がいいです。下記サイトを見て設定しました。

AWS EC2インスタンスにElastic IP(固定グローバルIPアドレス)を割り当てる

基本的にクリックするだけで設定できます。

ElasticIPはインスタンスを停止している時のみ1時間あたり$0.005の料金がかかります
「有限の資源であるIPアドレスを無駄遣いするなよ」という意味でしょうかね?

固定IPを使わないと・・・

awsの利用料金をできるだけ安くしたいのなら固定IPを取らないという選択もありかもしれませんがおすすめはできません。

固定IPを使わないと

固定IPを取得しないとリモートアクセスする際に毎回上記のPC nameを入力しなくてはなりません。
毎回awsの管理画面にアクセスして接続IPを調べるのは面倒すぎます。

1ヶ月に1回くらいしかawsにアクセスしないなら固定IPを取る必要はないかもしれませんが、現状私のような使い方でしたら固定IPは必須です。

windowsの自動サインイン

スケジューラーでインスタンスを起動してもwindowsのログイン画面が表示されている状態にしかなりません。
つまり、GRCが実行されないのです。

ということで、Windowsへの自動ログオン(サインイン)を設定しましょう。

通常のパソコンではアカウントの設定でパスワード無しの設定をすれば電源をいれるだけでログイン状態になりますが、EC2にインストールしたwindowsではそれができないので「パスワードを自動で入力する」という方法をとります

バージョンによって方法も変わるらしいので各自グーグルで調べてみてください。

私はEC2でWindows server 2012 R2を使っているので、グーグルで「 windows server 2012 R2 自動サインイン」と検索してレジストリをいじって設定しました。

GRCの自動起動&自動実行

ここからは簡単です。

GRCの自動起動

windowsのスタートアップフォルダにGRCのショートカットを入れましょう。

スタートアップの方法が2つあって1つは起動しなかったので、私が実際に使用している方法をご紹介します。

ファイル名を指定して実行

「ファイル名を指定して実行」で「shell:startup」と入力してEnter。

スタートアップフォルダ

スタートアップのフォルダが開きますのでそのフォルダにGRCのショートカットを入れます。

これでGRCの自動起動は完了です。

GRCの自動実行

次にGRCの自動実行の設定です。

起動時に順位チェック実行

時間を指定する方法もありますが、私は「起動時に順位チェック実行」を使ってます。

起動時に順位チェック実行の詳細設定

起動した直後はCPUが忙しいと思うので実行までの待機時間を「5分」にしています。

ここまで設定すれば毎日自動でGRCで順位チェックがされるようになります。

GRCのバックアップ

私は毎日GRCのバックアップをとってます。
バックアップを取る理由は「GRCが実行されたか確認するため」です。

私はawsにもdropboxをインストールしてバックアップファイルをそこに保存するようにしています。
そうすると「awsでGRCが実行されたこと」と「今日のGRCチェックが終わったこと」がawsにリモートアクセスをせずにわかります。

GRCのバックアップ設定

自動バックアップの設定は「オプション」→「自動バックアップ」

バックアップ設定の詳細

バックアップの詳細を設定します。

前述のとおり、保存先はdropboxにリンクしたフォルダを指定してます。

バックアップの保存期間は7日にしてます。これは各自お好みでいいと思います。

macのフォルダ

dropboxのフォルダにバックアップファイルが保存されると、このようにローカルのPCのフォルダにも並びますのでGRCが稼働したことがわかります。


以上が「AWSのEC2スケジューラーで費用を月10$程度に節約してGRCを毎日自動で使う方法」になります。

awsの費用を節約したい方やGRCを自動で回したい方は、ぜひやってみてください。