【Cloud Automator】Amazon EC2 を定期的に起動/停止【AWS運用自動化】

AWS運用自動化サービス「Cloud Automator」

今期、体脂肪率を 7% 減らした技術三課の手塚です。ダイエットの成功には、我慢しなくても自然と減量が進む環境作りが重要と考えますが、この話は長いので別の機会にしましょう。

さて今回は Amazon EC2(以下 EC2) の起動・停止をノンプログラミングで自動化する方法を紹介します。
もし一日数時間しか利用せず未使用時に stop できるサーバがあれば、少ない労力でランニングコスト削減に貢献できると考えます。

概要

EC2 の起動・停止テストとして、下記の設定を行います。
– 1. EC2 を平日深夜 1:00 から 1:05 の間だけ起動すること
– 2. 土日祝日は何もしないこと
– 3. 起動/停止の失敗時にメール通知すること

また上記の設定をノンプログラミングで容易に設定・メンテナンス可能な運用とするため、Cloud Automator(以下 CA) を使用します。

Cloud Automator とは?

サーバーワークスが提供する AWS 運用自動化サービスです。
– 公式サイト: https://cloudautomator.com/
– 1 ヶ月間の無料トライアルがあり (2019/08/27 現在)
AWSリセールサービス(pieCe) 加入の場合、無償で利用可能です(pieCe は有償なんで、無償ではない!というツッコミありそうですが…)

準備

テスト用の EC2 を 1 台作成します。
– 参考: Linux 仮想マシンの起動 / クラウドならアマゾン ウェブ サービス 【AWS 公式】

1. 初期設定

CA とテスト用 EC2 を作成した AWS アカウントを紐付けます。

1-1. サインアップ&サインイン

こちらの手順に従います。無料トライアルの方はまずサインアップが必要です。

1-2. IAMロールによるAWSアカウントの登録

こちらの手順に従います。私が気づいた注意点が 2 つあります。

  • CA と対象 AWS アカウントの両方にサインインできること
    • 手順 (2)「IAMロールを作成」のサイト間連携に必要です
  • スタックのクイック作成ページ が正しい AWS アカウントのものであること
    • もしAWS アカウントを複数利用中の場合、誤った AWS アカウント上に IAM ロールを作成しないよう注意です

ここで作成するグループ名は任意です。以降の説明では テストサーバーグループ とします。

2. ジョブ作成

概要 の設定を実現するため、CA 上に 2 つのジョブを作成します。

起動ジョブ

  • 毎週 月 火 水 木 金 の 1:00 に EC2 を起動
    • 日本の祝日と重なる場合は実行しない
    • 起動/停止の失敗時にメール通知する

停止ジョブ

  • 毎週 月 火 水 木 金 の 1:05 に EC2 を停止
    • 日本の祝日と重なる場合は実行しない
    • 起動/停止の失敗時にメール通知する

2.1 起動ジョブ作成

ジョブの追加
ジョブの追加

以降のステップ 1 から 9 を実行するとジョブが完成します。

ステップ 1: グループの選択

1-2. IAMロールによるAWSアカウントの登録 で作成した テストサーバーグループ を選択します。

ステップ1
ステップ1

ステップ 2: トリガーの選択

タイマートリガー を選択します。

ステップ2
ステップ2

ステップ 3: トリガーの条件

ジョブのトリガー条件を設定します。

ステップ3
ステップ3
設定
実行日付/曜日 毎週 月 火 水 木 金
実行時間 1 時 0 分
例外条件 日本の祝日と重なっていた場合はアクションを実行しない にチェック

ちなみに下記は登録済の祝日一覧です (2019/08/27 現在)。

祝日一覧
祝日一覧

ステップ 4: 有効期間

今回は有効期間を設定しません。

ステップ4
ステップ4

ステップ 5: アクション

アクションとして EC2: インスタンスを起動 を選択します

ステップ5
ステップ5

ステップ 6: AWSアカウント

対象 AWS アカウントを選択します。

ステップ6
ステップ6

ステップ 7: アクションのパラメータ

作成した EC2 のリージョンとインスタンス名を選択します。
また リソースの終了ステータスをチェックする にチェックします。これにより API のリクエスト成否ではなく、実際に EC2 が起動/停止したか否かの確認を行うことができます。

ステップ7
ステップ7
設定
リージョン アジアパシフィック(東京)
インスタンス 作成した EC2 インスタンス
リソースの終了ステータスをチェックする チェックする

ステップ 8: 後処理

起動/停止の失敗時にメール送信する設定をします。
失敗時 の右の + をクリックします。

ステップ8
ステップ8

後処理を入力し、追加 ボタンを押します。

後処理
後処理
設定
後処理名 ジョブ失敗時メール送信
グループ テストサーバグループ
サービス Eメール
メールアドレス 受信可能なメールアドレス

選択して下さい をクリックし、リストから後処理を選択します。

後処理を選択
後処理を選択

ステップ9: ジョブ名

ジョブ名は任意で構いませんが、ここでは テストサーバ起動 とします。
入力後に 作成する をクリックし、起動ジョブの作成は完了です。

ステップ9
ステップ9

2.3 停止ジョブ作成

2.2 起動ジョブ と同様の手順で作成しますが、次の 3 つが異なります。
– ステップ 3 の時刻を 01:05 にする
– ステップ 5 のアクションを EC2: インスタンスを停止 にする
– ステップ 9 のジョブ名を テストサーバ停止 等、重複しないものにする

ジョブの作成は以上です。

2.4 起動ジョブの動作確認

作成したジョブは、タイマーを待たずに手動実行も可能です。これにより迅速にジョブのテストを行うことができます。

今すぐ実行
今すぐ実行

2.5 実行ログ

運用ジョブ > 実行ログ一覧 より確認できます。

実行ログ一覧
実行ログ一覧

詳細 をクリックすると次のような表示となります。

実行ログ詳細
実行ログ詳細

まとめ

今回は Cloud Automator により EC2 の起動・停止等の作業をノンプログラミングで自動化しました。他にも AMI バックアップ等、様々なアクションが実行可能です。ぜひ一度お試しください!

以上

AWS運用自動化サービス「Cloud Automator」