ec2-schedulerでRDSを定期的に起動・停止する

前回、ec2-schedulerでEC2の定期起動・停止を試してみましたが、今回はRDSで実行してみたいと思います。RDSについてもほぼEC2と同様の設定になります

設定方法

DynamoDBのConfigTableに以下を設定
テーブル名はスタック名+ConfigTableになっています。
ex)
月曜から金曜までの9:00 - 20:00(日本時間)の間だけRDSを起動する設定

configレコード
type name use_metrics default_timezone regions schedule_lambda_account scheduled_services tagname trace
config scheduler true Asia/Tokyo { "ap-northeast-1" } true { "ec2", "rds" } Schedule false

scheduled_servicesにrdsを追加します

scheduleレコード
type name description periods timezone
schedule rds_stopstart rds stop start {"weekday_9to20"} Asia/Tokyo
periodレコード
type name description timezone weekdays begintime endtime
period weekday_9to20 Office hours Asia/Tokyo {"mon-fri"} 9:00 20:00

RDS側にタグを付与

対象のRDSに以下のタグを付与します
f:id:cloudfish:20180413083308p:plain

動作確認

まず停止状態にしておき、時間が来るまで待ちます
f:id:cloudfish:20180413083333p:plain

設定した時間内になれば自動的に起動されました
f:id:cloudfish:20180413084842p:plain

注意点

  • RDSクラスターの一部もしくはAuroraはec2-schedulerでは自動起動・停止はできません。
  • EC2でも同様ですが、設定時間から起動が開始されているためインスタンスが利用可能となっているわけではないので、利用可能としたい時間にあわせて事前に起動しておく必要があります。
  • メンテナンスウィンドウを考慮したスケジュールも可能となっています。詳しくはドキュメントを参照してください。
  • 本番で利用する場合は、正常に起動しない場合も想定して監視をするなどの考慮してください。

RDSも停止することが可能になったので、定期的な停止をしてコスト削減を検討してみてはいかがでしょうか。