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

記事タイトルとURLをコピーする

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

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

概要

EC2 の起動・停止テストとして、下記の設定を行います。

    1. EC2 を平日深夜 1:00 から 1:05 の間だけ起動すること
    1. 土日祝日は何もしないこと
    1. 起動/停止の失敗時にメール通知すること

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

Cloud Automator とは?

サーバーワークスが提供する AWS 運用自動化サービスです。

準備

テスト用の 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

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

タイマートリガー を選択します。 ステップ2

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

ジョブのトリガー条件を設定します。 ステップ3

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

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

ステップ 4: 有効期間

今回は有効期間を設定しません。 ステップ4

ステップ 5: アクション

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

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

対象 AWS アカウントを選択します。 ステップ6

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

作成した EC2 のリージョンとインスタンス名を選択します。 また リソースの終了ステータスをチェックする にチェックします。これにより API のリクエスト成否ではなく、実際に EC2 が起動/停止したか否かの確認を行うことができます。 img src="https://cdn-ak.f.st-hatena.com/images/fotolife/s/serverworks/20200711/20200711235946.png" alt="ステップ7" width="1280" height="623" class="size-full wp-image-73400" />

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

ステップ 8: 後処理

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

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

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

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

ステップ9: ジョブ名

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

2.3 停止ジョブ作成

2.2 起動ジョブ と同様の手順で作成しますが、次の 3 つが異なります。

  • ステップ 3 の時刻を 01:05 にする
  • ステップ 5 のアクションを EC2: インスタンスを停止 にする
  • ステップ 9 のジョブ名を テストサーバ停止 等、重複しないものにする

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

2.4 起動ジョブの動作確認

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

2.5 実行ログ

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

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

まとめ

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

以上

手塚 忠 (Tadashi Tetsuka) 記事一覧はコチラ

カスタマーサクセス部所属、2019 年 2 月入社のネットワークエンジニア。シリアルコンソールがマネジメントコンソールに変わったが、スイッチ愛は今も変わらず。 2023 Japan AWS Top Engineers (Networking), 2023 AWS ALL Certifications Engineers