開発用EC2を毎日21:00に停止し、翌朝08:00に起動したい。時刻は日本時間で、対象確認と結果通知を含む承認済みSystems Manager Automation runbookがある。
このrunbookを必ず再利用し、常駐するスケジュール実行サーバーは設けない。指定時刻の分内にAPIの呼び出しを開始する。秒単位の開始やEC2の操作完了時刻は要件に含めない。必要なIAMロールと対象インスタンスは準備済みである。
要件を満たす構成要素を2つ選べ。
Asia/TokyoのSchedulerからStartAutomationExecutionへrunbook名と入力を渡し、承認済みの起動・停止手順を実行する。
詳細解説
EC2 APIの直接呼び出し自体は可能だが、指定されたrunbookの対象確認と結果通知を省略するため今回の要件を満たさない。
メトリクスのしきい値による検知は、指定した現地時刻に起動・停止するスケジュールの代わりにはならない。
2つのcron式とタイムゾーンで指定分の呼び出しを設定する。柔軟な実行枠を無効にしても、秒単位の開始やEC2操作の即時完了は保証しない。
同じ数字でもUTCとAsia/Tokyoでは9時間ずれる。UTCの21時は日本時間の翌日6時、UTCの8時は日本時間の17時になる。
universal targetでAPIを呼び出し、DocumentNameとrunbookが定義するParametersを渡す。承認済みの確認・通知手順も再利用できる。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
公式資料のuniversal target、タイムゾーン、StartAutomationExecutionのDocumentNameとParametersを確認する。
参考にした公式資料
確認できる内容
Schedulerの時刻・対象API・JSON入力と、runbook内のEC2操作・通知を区別し、必要な権限を説明できる。
理解のポイント
- EventBridge Scheduler
- SSM Automation
- EC2停止
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
時刻とAPI入力をつなぐ
停止はcron(0 21 * * ? *)、起動はcron(0 8 * * ? *)をAsia/Tokyoで評価し、FlexibleTimeWindowのModeをOFFにする。Schedulerの呼び出し精度は60秒で、設定した分内のAPI開始とEC2の操作完了は区別する。universal targetからStartAutomationExecutionへDocumentNameとrunbookが要求するParametersを渡す。時刻だけ正しくても対象APIや入力が誤れば手順は開始できない。
2種類の実行権限を分ける
Schedulerの実行ロールはAutomationを開始する権限を持つ。runbookが使うロールにはEC2状態変更や通知に必要な権限を付ける。手順を直接API呼び出しに置き換えると、対象確認や通知を省略する場合がある。