/ec2scheduler

AWS EC2 Scheduler

Primary LanguagePython

AWS EC2 Scheduler

The AWS EC2 Scheduler is a script that given a set of profiles schedule the uptime of ec2 instances.

Getting Started

Install through pip.

pip install aws-ec2-scheduler

The initial configuration is done in the aws.conf file. Copy the aws.conf.dist to aws.conf and configure with the right credentials. By default aws.conf reads schedule profiles from scheduler.json but you can change the directory from where you want to load the profiles.

To run the scheduler just run

ec2scheduler -c path/to/config_file

Profiles

The scheduler expects you to create profiles to start and stop the machines.

You can just copy the scheduler.json.dist and start creating your new profiles from there.

{
    "profiles": [ // an array of profiles
        {
            "name": "staging", // profile name
            "region": "us-west-1", // aws region
            "schedule": { // weekday schedule
                "monday": {
                    "start": 9, // start hour
                    "stop": 19 // stop hour
                },
                "tuesday": {
                    "start": 9,
                    "stop": 19
                },
                "wednesday": {
                    "start": 9,
                    "stop": 19
                },
                "thursday": {
                    "start": 9,
                    "stop": 19
                },
                "friday": {
                    "start": 9,
                    "stop": 19
                },
                "saturday": {
                    "start": 9,
                    "stop": 19
                },
                "sunday": {
                    "start": 9,
                    "stop": 19
                }
            },
            "instance_tags": [ // tags from the instances you want to attach this profile schedule
                "jobs-staging", // this tag should be the name of the instance tag:Name
                "admin-staging",
                "reports-staging"
            ],
            "elb_names": [ // add this configuration if you want to reregister this elb instances
                "example-tag-elb-name"
            ]
        }
    ]
}