AWS

【EC2を業務時間に起動(AWS)】

2024年12月20日


EC2インスタンスを業務時間のみ起動させる実装のメモです。

平日は9:00に起動、18:00に停止。土日祝日は停止したまま。

祝日はGoogleカレンダーのデータをChange Calendarに反映。

◎主な使用サービス
・Change Calendar
・Step Functions
・EventBridge



0.概要

各サービスの使い方です。

①Change Calendar
・土日祝日用(「デフォルトで開く」)
 土日に「イベント」作成
 Googleカレンダーのデータから祝日反映
・業務時間用(「デフォルトで閉じる」)
 9:00〜18:00に「イベント」作成

②Step Functions
・EC2の条件に合ったら起動する設定

③EventBridge
・平日9:00と18:00に起動する設定






1.祝日データのエクスポート

Googleカレンダーから祝日データであるcsvファイルをエクスポート。

csvファイルをChangeCalendarの祝日カレンダーに反映する。

①csvファイルのエクスポート

Google画面からGoogleカレンダーを開く。

左ペインの「他のカレンダー」>「 関心のあるカレンダーを探す」を選択。

「日本の祝日」を選択し「祝日」にチェックを入れる。
「その他の行事」はチェックしない。

「日本の祝日」を追加して「設定」を選ぶ。
「 iCal 形式の公開 URL」URL から「.ics ファイル」をダウンロード



②csvファイルの成形

そのままだと順番が日付順じゃないようなので直します。

こちらのページに成形用Pyhonスクリプトを置きました。

全祝日が記載されているかなども確認します。



2.Change Calendar

Change Calendarの多くのネット記事を見ました。
その中でも、こちらの記事が一番参考になりました。

特にStep Functionsとの組み合わせで以下の項目です。


 ANDの場合
締め日は基本実行するけど、休日だったら実行しない


参考記事

 

カレンダー作成

Change Calendarでカレンダーを2つ用意します。

Systems ManagerからChange Calendarに入ります。

<カレンダー>
①営業時間用
 ⇒営業時間なら処理を実行する
 (「デフォルトで閉じる」)

②土日祝用
 ⇒祝日なら処理を実行しない
 (「デフォルトで開く」)


イベント作成

①営業時間用
・例)月〜金:AM12:00〜PM11:59

②土日祝用
・土日例)土〜日:AM12:00〜PM11:59
・祝日例)天皇誕生日:AM12:00〜PM11:59





3.Step Functions


Step Functionsの作成も上述の記事を主に参考にしました。

基本的には記事にあるJSONコードを書き換えるだけです。
リソース部分を使っているものに変えましょう。


ステートマシン作成

EC2自動起動のJSONコードはGitHubページに置いています。

コード内の「カレンダー名」を書き換えて使います。
コピーしてステートマシン作成時の「JSONコード」欄に貼ります。

完成後のフローイメージは上の画像です。

そのコードで動くかどうか実行して試してみましょう。





4.EventBridge

ステートマシンを自動で実行させるには起動させます。

EventBridgeで指定の時間に実行させます。

「スケジュール」作成の際に cron式で指定します。

(執筆中)





スポンサーリンク

-AWS
-, ,

Copyright© さねたにブログ , 2025 All Rights Reserved.