るいすときのこの物語

オタクエンジニアの雑記

EC2の自動停止・起動を超柔軟に超簡単に実現する「AWS Instance Scheduler」


AWS Instance Scheduler

aws.amazon.com

AWS の中の人が作っていて
元は EC2 Scheduler という名前だったのが、AWS Instance Scheduler に変わった。

テンプレートが用意されているので、CloudFormation で実行すれば構築が終わるという素晴らしい仕組み。

アーキテクチャ

f:id:rarirureluis:20190326171818p:plain

シンプル
インスタンスの状態保存とか、コンフィグは全て DynamoDB で管理されてます。

できること

  • EC2, RDS にタグをつけることで、割と柔軟に自動起動・停止ができる
  • 自動でスケールアップ・ダウンもできる
  • クロスアカウント、クロスリージョン対応
  • CLI もあるよ

セットアップ

$ git clone git@github.com:awslabs/aws-instance-scheduler.git
$ cd aws-instance-scheduler/deployment/
$ bash build-s3-dist.sh
$ cd dist/

出てきた .template を CloudFormation に読み込ませて適当にパラメータ弄って実行

DynamoDB

f:id:rarirureluis:20190326173559p:plain
DynamoDB -> config

dev-stg が今回作ったレコードで
16:40 ~ 16:50 の間は起動していて、それを過ぎるとシャットダウン という流れ。

既にあるレコードを見てみると細かく制御できる感じ。

EC2

作成した schedule.name が Value になり、Key はデフォルトなら Schedule
今回の場合は Schedule: dev-stg

料金

Lambda で $5 per month
DynamoDB はリソースの数で変動。
ちなみに、該当テーブルは Auto Scaling が有効。
CWM が有効なら +$0.9 per month per schedule || scheduled service