AWSでEC2インスタンスを夜間自動停止・朝に自動起動する方法(EventBridge + SSM)

AWS全般

運用コスト削減のため、夜間のEC2インスタンスを自動で停止し、朝に自動で起動する仕組みを構築したいケースは多くあります。この記事では、AWS EventBridge(旧CloudWatch Events)とAWS Systems Manager(SSM) を組み合わせて、コード不要・Lambda不要でスケジュール制御を行う手順を解説します。


構成概要

  • EventBridge Scheduler(cron)で起動と停止の時間を定義
  • EventBridge → SSM Run Command をトリガーとして EC2 に対して停止/起動を実行
  • EC2インスタンスには SSM Agent を有効にし、SSMから操作可能な状態にしておく

前提条件

  1. 対象のEC2インスタンスにSSM Agentがインストール・有効化済み(Amazon Linux2などは標準で対応)
  2. EC2インスタンスにSSMとEC2の操作権限を持った IAMロール(例:AmazonSSMManagedInstanceCore + EC2フル権限) をアタッチ
  3. インスタンスがSSMから操作可能であること(SSM > Managed Instances に表示されている)

手順

1. EC2インスタンスIDの確認

対象のインスタンスID(例:i-0123456789abcdef0)を控えておく。


2. Systems Manager Documents(SSM ドキュメント)の確認

AWSが提供している以下のSSMドキュメントを使います:

  • 起動用:AWS-StartEC2Instance
  • 停止用:AWS-StopEC2Instance

3. EventBridgeルールの作成(起動用)

  1. AWSマネジメントコンソールで EventBridge > スケジュール を開く
  2. スケジュールを作成」を選択
  3. 名前:start-ec2-morning
  4. スケジュールパターン:cron(0 8 ? * MON-FRI *)(例:平日8時に起動)
  5. ターゲット:
    • タイプ:AWSサービス
    • サービス:Systems Manager Run Command
    • ドキュメント:AWS-StartEC2Instance
    • ターゲットのインスタンス:インスタンスIDを指定

4. EventBridgeルールの作成(停止用)

同様に以下の設定で夜の停止用スケジュールを作成:

  1. 名前:stop-ec2-night
  2. スケジュールパターン:cron(0 20 ? * MON-FRI *)(例:平日20時に停止)
  3. ターゲット:
    • ドキュメント:AWS-StopEC2Instance
    • ターゲット:起動と同様に指定

5. 動作確認

設定後、次回のスケジュールが来ると自動でインスタンスが起動・停止します。必要に応じて、EventBridgeの「履歴」から実行ログを確認可能です。


補足:Lambdaを使わない利点

従来はLambda関数で制御する方法が一般的でしたが、SSMドキュメントとEventBridgeを直接連携させることで、Lambda不要・管理工数削減・構成がシンプルになります。


まとめ

AWS EventBridgeとSSM Run Commandを組み合わせることで、手軽かつ安全にインスタンスの自動起動・停止を実現できます。特に開発環境や検証環境でのコスト削減に有効です。インスタンスの起動/停止以外にも、SSMを使えば各種バッチ処理の実行や自動運用の幅が広がります。

【ご案内】クラウド部のAWS詳細設計書テンプレート

クラウド部ではnoteにてAWS詳細設計書テンプレートの販売を行っております。詳細設計書の作成経験が浅い方向けのテンプレートとなっております。販売実績もございますので、よろしければ下記よりご利用ください。

AWS全般
クラウド部
タイトルとURLをコピーしました