複数台のEC2をスケジュールでON/OFFできるLambda関数、EventBridgeスケジュールおよび、それらを制御するのに必要なIAMロール、ポリシーを一括作成できるCloudFormationテンプレートです。
EC2をスケジュールON/OFFできるツールとして、Instance Schedulerなどもありますが、なるべくシンプルなものが良かったので自作しました。
aws.amazon.com
ソース
エラー処理(引数に指定したインスタンスが存在しない場合の処理など)がないので、もし利用される方がいる場合はお気を付けください。
使う前に設定すること
1. 対象の設定 Default: 'i-XXXXXXXXXXXXXXXXX,i-XXXXXXXXXXXXXXXXXX' # スケジュールON/OFF対象にしたいEC2のインスタンスIDを記載する。複数台ある場合はカンマで区切る。 2. ON/OFF日時の設定 ScheduleExpression: 'cron(0 14 ? * FRI *)' # UTCで金曜14時(=JSTで金曜23時)にOFF ScheduleExpression: 'cron(0 23 ? * SUN *)' # UTCで日曜の23時(=JSTで月曜8時)にON # これらについて、頻度、時刻を必要に応じて変更する
使い方
上記ソースを任意の名前を付けて保存し、CloudFormationのスタックの作成で作成すると、スケジューラ含め設定されるので、開始日時が来たらLambda関数が実行されます。
実行成否の確認
CloudWatch Logsにログが出力されます。(/aws/lambda/<スタック名⁺ランダム文字列>というロググループ内に、実行の都度ログストリームが作成されます)
かかる費用
このLambda関数自体はかなり低額で実行できます。(3つのインスタンスを起動する際、メモリ128MBの割り当てで実行時間は約3秒でした≒0.38GB秒)
aws.amazon.com
不要になったら
スタックを削除すると、上記ソースに定義されたリソースは削除されます。(出力されたCloudWatch Logsのログは削除されないため、必要に応じて手動で削除します)