解決したい問題
- 開発環境のコストを下げたい
- 勤務時間内だけEC2とRDSを起動したいが、手動で操作したくない
設定手順(EC2)
自動起動
schedule detail(スケジュール詳細)
-
実施時間まで指定したいので、Cron式設定の「Cron-based schedule」を選択
※ Cron式にAWS独自の部分があるので、詳細はこちらを参照
※ 月-金朝9時の場合は以下の設定になります。
※ 設定が有効の場合、実行時間が一番近い10件表示される
-
指定時刻で実行したいので、[Flexible time window]は[Off]を選択
target(設定対象)
{
"InstanceIds": [
"i-0000000000000000a",
"i-0000000000000000b"
]
}
settings(異常時設定)
-
デフォルトの[Retry policy]は(正常実施できなかった場合、)24時間以内、最大185回というもので、
日次のタスクに向いていないため、1,2時間内最大10回くらいに変更をおすすめ
※ EC2インスタンスタイプ一時利用できない可能性があるため、起動設定のリトライ回数と期間は少し余裕を持つように設定するのをおすすめ
-
[Permissions]はEC2起動権限を持つIAMRoleを別途作成後指定
※ 同じリソースの起動と停止Policyを一つのRoleにまとめるほうが管理しやすい
自動停止
基本流れは起動設定時と同じため、違うところと注意点だけを書きます。
- 対象APIは[StopInstances]
- 0時を跨いて停止する場合、実行日は火-土になるため、CRON式の日付設定は変わる
設定有効・無効化
Schedules一覧画面で変更したい設定を選択、Disable・Enableをクリック
設定手順(RDS)
基本流れはEC2と同じため、違うところだけで書きます。
- 起動と停止のAPIは[StartDBInstance]と[StopDBInstance]になるため、管理対象が複数の場合、台数分の設定が必要
- RDSのDB identifierを以下のように指定
{
"DbInstanceIdentifier": "DB identifier"
}
効果
インスタンス費用がメインの開発環境では、
稼働率と同じ割合で費用削減できます。
スケジュール | 稼働率 |
---|---|
土日停止 | 73.3% |
平日0時〜9時+土日停止 | 48.3% |
土日停止だけでも現在コストの7割、平日も追加した場合は5割以下に削減できる見込みのため、設定次第リザーブドインスタンス以上のコストダウン効果があります。
開発環境ならではの節約術ですので、ぜひ実際の環境で実践してみてください。