Configures AWS Scheduled Scaling for Amazon EC2 Auto Scaling based on Tags.
You can Tag your EC2 instances and define in a config file the scaling profiles. The rest is magic...
$ pip install sked
sked create [-c=<config_file>] sked delete [-c=<config_file>] sked -h | --help sked --version
sked create -c my_schedule.yml sked delete -c my_schedule.yml
If you omit the -c parameter, the cli by default tries to use a file called sked.yml.
# sked.yml
profiles:
small:
desired_capacity: 5
min_size: 1
max_size: 10
recurrence: 0 7 * * * # every day at 07:00
overnight:
desired_capacity: 0
min_size: 0
recurrence: 15 19 * * MON-FRI # 19:15 from Monday to Friday
auto_scaling_groups:
- filter:
tag:
key: Name
value: SomeTag
schedule:
- profile: small
times:
- start_time: 2018-03-01T00:00:00Z
- start_time: 2018-04-01T00:00:00Z
- filter:
tags:
- tag: {key: Name, value: MyInstanceA}
- tag: {key: Name, value: 'My Instance B'}
schedule:
- profile: small
times:
- start_time: 2018-03-01T00:00:00Z
- start_time: 2018-04-01T00:00:00Z
Sked doesn't store the state of the applied scheduled action. Everything is based upon the Yaml configuration file.
If you want to use the delete command make sure you didn't change the Yaml configuration file in the meantime.
For instance, the following workflow will produce an error:
- run
sked create - change the
sked.ymlfile - run
sked delete