今期、体脂肪率を 7% 減らした技術三課の手塚です。ダイエットの成功には、我慢しなくても自然と減量が進む環境作りが重要と考えますが、この話は長いので別の機会にしましょう。
さて今回は Amazon EC2(以下 EC2) の起動・停止をノンプログラミングで自動化する方法を紹介します。 もし一日数時間しか利用せず未使用時に stop できるサーバがあれば、少ない労力でランニングコスト削減に貢献できると考えます。
概要
EC2 の起動・停止テストとして、下記の設定を行います。
- EC2 を平日深夜 1:00 から 1:05 の間だけ起動すること
- 土日祝日は何もしないこと
- 起動/停止の失敗時にメール通知すること
また上記の設定をノンプログラミングで容易に設定・メンテナンス可能な運用とするため、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アカウントの登録
で作成した テストサーバーグループ
を選択します。
ステップ 2: トリガーの選択
タイマートリガー
を選択します。
ステップ 3: トリガーの条件
ジョブのトリガー条件を設定します。
設定 | 値 |
---|---|
実行日付/曜日 | 毎週 月 火 水 木 金 |
実行時間 | 1 時 0 分 |
例外条件 | 日本の祝日と重なっていた場合はアクションを実行しない にチェック |
ちなみに下記は登録済の祝日一覧です (2019/08/27 現在)。
ステップ 4: 有効期間
今回は有効期間を設定しません。
ステップ 5: アクション
アクションとして EC2: インスタンスを起動
を選択します
ステップ 6: AWSアカウント
対象 AWS アカウントを選択します。
ステップ 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: 後処理
起動/停止の失敗時にメール送信する設定をします。
失敗時
の右の +
をクリックします。
後処理を入力し、追加
ボタンを押します。
設定 | 値 |
---|---|
後処理名 | ジョブ失敗時メール送信 |
グループ | テストサーバグループ |
サービス | 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