白”雪姫”の雑なエンジニアブログ

ダイアリーがなくなってしまったため、エンジニアブログとして再出発

EventBridgeによるEC2インスタンスの自動起動・停止のやり方。

本日のお話

先日、JAWS女子会に参加した時のレポートにも記載したEventBridgeでEC2インスタンス自動起動・停止を行おう

と言う記事です。

利用するサービス

  • IAMロール
  • EventBridge

だけです。

事前準備

]

  • EventBridge scheduler用のIAMロールの作成

カスタム信頼ポリシーで以下を登録、権限はEC2 fullAccess(実際は、EC2:Stop Instance,EC2:Start Instanceだけで動きます。)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

実際に設定をして見ます。

  1. EventBridgeの左ペインからスケジュールを選択

  1. 右ペインの下の方にある「ルール作成」を選択

スケジュール名・説明・スケジュールのパターンを設定して次へ遷移します。

 

この時、注意することとして、最下部にある

  • フレックスウィンドウタイム

は、ご自身の環境に合わせて必ず設定を行ってください。

  • cron方式

を選択の場合は、AWS独自の書き方があります。参照して登録しましょう。

  1. 「すべてのAPI」に切り替えます。

  2. 検索窓で、 EC2と検索を行い、結果に出てきてる Amazon EC2を選択

  3. 起動ならstart、停止ならstopを検索し選択

  4. 選択すると自動で下の方に遷移するので、MyDataとなっているところを事前準備で調べていたInstanceIDへ書換(この時インスタンスIDを""で囲い,で区切ると複数台の設定が可能です。)

  5. 最後の遷移で、IAMロールのプルダウンがあるため、事前準備で作成したIAMロールを紐付けます。  

動作確認

実行時間後にInstanceが停止、起動をしていることを確認します。 ※今回は設定のみの説明のため、記載はしていません

所感

本件はセキュリティ関係なく、基幹システムや開発用などのコスト削減には有用だなと思っています。 理由としては、いくつかありますが、「利用していない時間の停止が可能だから」が全てになります。 勿論、繁忙期などがあれば、スケジュールの停止なども可能です。 クラウド破産などという言葉が出てきているくらいですので、おさえられるところは抑えた方が良いのかな。なんて思ってこの記事を改めて書かせてもらいました。