EventBridge Scheduler で EC2 を自動起動・停止させるときのメモ

EventBridge Scheduler で EC2 を自動起動・停止させるときのメモ

■ スケジュールの種類

EventBridge Scheduler を作るときは、
options がいろいろあるけれど 「定期的なスケジュール(cron)」 を選ぶ。

rate の方は今回使わない。


■ タイムゾーン

ここを毎回忘れる。
デフォルトが UTC なので、必ず Asia/Tokyo(UTC+09:00) に変える。

UTC のままで設定すると、9 時にしたつもりが 0 時とかに動いてしまうので注意。


■ cron のフィールド(GUI)

GUI に 6 つ並んでいるやつ。
一応、順番はこんな感じ。

  • 分 → 0
  • 時間 → 8(起動)、22(停止)
  • 日付 → ?(ここは毎回これ)
  • 月 → *
  • 曜日 → ここだけ用途で変える(後述)
  • 年 → *

「日付は ? にして、曜日で指定する」のを忘れがち。
これ逆にすると怒られる(排他)。


■ 用途ごとの曜日欄の書き方

GUI の「曜日」に直接書く。

  • 土日だけ → SAT,SUN
  • 平日だけ → MON-FRI
  • 毎日 → *

あとは時間を 8 → 起動/22 → 停止 に変えるだけ。

土日だけ朝 8 時なら、GUI にこう入れる:

0  /  8  /  ?  /  *  /  SAT,SUN  /  *

平日だけ 22 時なら:

0  /  22  /  ?  /  *  /  MON-FRI  /  *

■ EC2 を動かすターゲット設定

ターゲットは以下のパターン。

  • 種類:AWS SDK call
  • サービス:EC2
  • アクション:

    • 起動 → StartInstances
    • 停止 → StopInstances
{
  "InstanceIds": ["i-xxxxxxxxxxxxxx"]
}

複数あればカンマ区切りで増やすだけ。


■ IAM ロール

Scheduler が実行するときに使うロールが必要。
ここは細かく書いてもしょうがないので最低限だけ。

  • Trust Policy は scheduler.amazonaws.com に AssumeRole を許可
  • EC2 の Start/Stop ができれば良い

暗号化EBSを使ってる場合だけ KMS の権限でつまづくことがある。


■ 注意点

  • タイムゾーンを戻し忘れる
  • 「日付」と「曜日」を両方指定してしまう
  • Auto Scaling や SSM StateManager のポリシーで勝手に再起動される
  • Start/Stop を 1 つのスケジュールでやろうとして失敗(別々に作る)
  • IAM ロールの信頼関係を間違えると動かない(scheduler.amazonaws.com)

■ まとめ

  • cron で作る
  • 日付は ?
  • 曜日は MON-FRI とか SAT,SUN
  • タイムゾーンは Tokyo
  • StartInstances / StopInstances を target にする
Last modified: 2025-11-17

Author