0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EventBridge × Systems ManagerでEC2を自動停止してみた

0
Last updated at Posted at 2026-03-30

はじめに

この記事では、EC2を特定の時間に自動停止する仕組みを

  • EventBridge Schedulerを使ったシンプルな方法
  • Systems Manager Automationを使った運用向きの方法

の2つの実装方法で紹介します。

実際に社内勉強会で行ったハンズオン内容をベースにしているので、
「なぜその構成にするのか」という背景も含めて解説します。

やりたいこと

  • 開発環境・テスト環境のEC2を業務時間外に自動停止
  • 例: 平日 9:00〜17:45 のみ起動、それ以外の時間は自動停止

コスト削減 + 運用負荷軽減が目的です。

実装方法は2通りある

方法 概要 向いているケース
方法① EventBridge SchedulerからEC2APIを直接実行 少数台・検証用途
方法② EventBridge Rule + SSM Automation チーム運用・拡張前提

方法① EventBridge Scheduler + EC2StopInstances API

構成イメージ

EventBridge Scheduler
        ↓(指定時刻)
EC2StopInstances API
        ↓
EC2停止

なぜ EventBridge Scheduler を使うのか

EventBridge Schedulerは「スケジュール実行」に特化したサービスです。

  • cron / rate / at に対応
  • ローカルタイムゾーン指定可能
  • サマータイム(DST)対応
  • 単発実行も可能

従来の EventBridge Ruleより、時間指定だけをしたいケースでは非常に使いやすいのが特徴です。
構成図
こちらが構成図です。
特定の時間にEventBridge Schedulerを起動し、直接StopInstancesという
EC2を停止するAPIを実行して、EC2を停止します。

基本手順(概要)

  1. EC2インスタンスを作成
  2. EventBridge Schedulerを作成
  3. ターゲットに EC2の StopInstances APIを指定
  4. Scheduler用のIAM ロールを作成・紐付け
  5. 指定時刻にEC2が停止することを確認

この方法のメリット・デメリット

メリット

  • 構成がシンプル
  • 設定が少なく、すぐ試せる
  • IAMも最小限で構成可能

デメリット

  • 停止対象をインスタンスIDで直接指定
  • 台数が増えると、管理が煩雑
  • また、設定ミスが起きやすい

方法② EventBridge Rule + Systems Manager Automation

なぜ Systems Manager Automationを使うのか

方法①の課題を解決するのが
Systems Manager(SSM)Automationです。

特徴として、インスタンスIDではなく「タグ」でEC2を管理する点があります。
構成図2
こちらが構成図です。


構成図3

こちらは先ほどの構成図のSystem Manager Automationの部分を少し詳細に記載しています。
今回のケースでは、EventBridge Ruleがパラメータとして、タグの値を受け渡します。
タグというのは、AWSリソースを整理するためのキーと値のペアのことで、AWSリソースに対して関連付けることができます。
今回は、停止するEC2に特定のタグを追加して、パラメータとして受け取ったタグが追加されているEC2を停止します。
タグは、単体でもリソースを検索したり、フィルタリングしたりすることができます。

構成イメージ

EventBridge Rule(スケジュール)
        ↓
SSM Automation実行
        ↓
タグ条件に一致するEC2を検索
        ↓
EC2停止

Systems Manager Automationとは?

  • AWSリソースの運用作業を自動化する仕組み
  • 「Automation ドキュメント」と呼ばれる手順書を実行する

今回使うポイント

  • EC2の停止処理はAWS公式ドキュメント
    • AWS-StopEC2Instance
  • 自分で停止処理を実装する必要はない

安全で再利用しやすいのが特徴です。

タグベース運用の例

EC2につけるタグ

Key Value
EC2Stop-example test

Automation の動き

  • 指定されたタグを持つEC2を検索
  • 該当するEC2をすべて停止

EC2が増えても、タグを付けるだけで自動停止対象にすることができます。

必要な設定(概要)

  1. SSM Automationドキュメントを作成(YAML)
  2. EventBridge Ruleを作成(スケジュール)
  3. IAM ロールに以下の権限を追加
    • ssm:StartAutomationExecution
    • tag:GetResources
  4. EC2にタグを付与
  5. 動作確認

ドキュメントは以下を参考に指定ください。

schemaVersion: '0.3'
description: 'StopEC2Instances Using Tags:EC2Stop-example'
assumeRole: '{{ AutomationAssumeRole }}'
parameters:
  EC2Stop-example:
    type: String
    default: test
    description: '(Required) test, product'
    allowedValues:
      - test
      - product
  AutomationAssumeRole:
    type: String
    description: (Optional) The ARN of the role that allows Automation to perform the actions on your behalf.
    default: ''
mainSteps:
  - name: StopEC2Instances
    action: 'aws:executeAwsApi'
    inputs:
      Service: ssm
      Api: StartAutomationExecution
      DocumentName: AWS-StopEC2Instance
      TargetParameterName: InstanceId
      Targets:
        - Key: 'tag:EC2Stop-example'
          Values:
            - '{{ EC2Stop-example }}'

Systems Manager Automationを使うメリット

1. 管理が圧倒的に楽

  • タグで停止対象を一覧化できる
  • 「どのEC2が止まるのか」が一目で分かる

2. ヒューマンエラーが減る

  • インスタンスIDのコピペが不要
  • 設定変更はタグ付けだけでOK

3. 再利用・横展開しやすい

  • ドキュメントのバージョン管理が可能
  • ドキュメントの他アカウントへ共有が可能
  • 開発環境 → 検証環境 → テスト環境に横展開しやすい

4. チーム・組織運用に向いている

  • 「誰が設定したか分からないScheduler」
  • 「インスタンスID直書き」

といった属人化を防げる

EventBridge SchedulerとRuleの使い分け

観点 Scheduler Rule
対象数 1対1 1対多
タイムゾーン ローカル可 UTCのみ
単発実行 不可
運用自動化

まとめ

今回は以下の2通りの方法でEC2の自動停止を行ってみました。

  • EventBridge Schedulerを使ったシンプルな方法
  • Systems Manager Automationを使った運用向きの方法

AWSでは、最初はシンプルに作り、運用フェーズで自動化・標準化する、という流れがよくあります。

今回のEC2自動停止は、その考え方を学ぶのにちょうどいい題材だと思います。
この記事がどなたかの参考になれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?