Lambda + CloudWatch で EC2 インスタンスを自動起動・停止

AWS, CloudWatch, Lambda

この記事は最終更新日から1年以上が経過しています。

はじめに

今私のチームではビルドサーバを利用しています。
でも、ビルドサーバって営業時間外って基本的に使わないよね〜ってことで、夜間は停止したいと思っていました。
でも、毎日AWSのコンソールに入って起動したり、停止したりするのは面倒ですよね?
そこで “EC2 自動停止” とかぐぐってみると Lambda と CloudWatch でできるとあったので、やってみました。

Lambda 設定

  1. “Lambda 関数の作成” から実行する関数の定義をします
  2. “設計図の選択”でブランク関数を選択し次へ
  3. “トリガーの設定” は、ここでは何も設定せずに次へ(あとでやります)
  4. “関数の設定” では以下の項目を各種設定します。
    • 名前
    • 説明
    • 設定する関数の言語
  5. “Lambda 関数のコード” にEC2 インスタンスを起動するコードを入力します
  6. “Lambda 関数ハンドラおよびロール” で実行に必要なロールをアタッチします。
  7. 設定内容を確認して関数を作成します。

起動時のコードは以下のようになります。

以下実行に必要なロールです

CloudWatch の設定

CloudWatch で Lambda を発火させるための設定を行います。
1. CloudWatch で “ルールの作成” をします。
2. “ルールの作成” でスケジュールを選択しCron式を選択します。
3. Cron式で、起動したい時間を指定します。
* 起動する時間は平日の 9:30 としました
4. “ターゲット” で先程作成した関数名を指定します。
5. “ルールの詳細を設定する” で以下の項目を入れてルールを作成します。
* 名前
* 説明
* 状態(これは有効のまま)

以上で、平日の9:30 にビルドサーバが起動するようになりました。
停止は ‘instance.start()’ を ‘instance.stop()’ にすれば可能です。
現在は、平日の21:30に停止するようにしています。

この記事を書いた人

高橋克幸
高橋克幸
新卒3年目で脱新人を目指してます。
フロントに興味を持ち始めた今日このごろ。
趣味は 麻雀 プログラミング 音楽。
運動不足を感じているため、ダンスを始めようかと思っています。

AWS, CloudWatch, Lambda