Skip to content

A simple daemon that monitors all the running AWS ec2 instances using boto3, filters ec2 instances by tags (team/group who created it) and sends an email as a reminder to the respective team members end of every day to shutdown idle instances.

License

DudeWhoCode/ec2notify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ec2notify

A simple daemon that monitors all the AWS ec2 running instances using boto3, filters it by the team/group who created it and sends an email as a reminder to the respective team members end of every day to shutdown idle instances.

prerequisites

Before using this script you need the following.

  1. An active AWS_KEY and AWS_SECRET with proper permissions
  2. ec2 instances need to be tagged. click to know what are tags and how to create them

Getting started

  1. Clone this project, create a Virtual envorinment, activate it and do, pip install -r requirements.txt
  2. Open ec2notify.cfg and edit the following fields
    • tags : If you have referred the above mentioned aws link, now you know what are the key and value in a tag. In this dictionary tags, its key is the aws Key and the value is the aws Value, in our case : For example, you have 6 instances (m1, m2, m3, m4, m5 , m6) running and there are three tech teams (backend, frontend, data) in your company. you would have assigned the following tags for the machines m1 -> team:data, m2 -> team:data, m3 -> team:backend, m4 -> team:backend, m5 -> team:frontend, m6 -> team:frontend. In this case the tags field should be tags={'team' : ['data', 'backend', 'frontend']}
    • username : The username of the sender email, for example notify@company.com
    • password : The password for sender email [notify@company.com]
    • recipients : recipients is a dictionary where the key is the "team name" and value is always a list of email ids of that team members. Note : The key should be same as the values given in tags field above.!! In our case : recipients={'data' : ['user@example.com', 'user1@example.com', 'user2@example.com'], 'backend' : ['user@example.com', 'user1@example.com', 'user2@example.com'], 'frontend' : ['user@example.com']}
    • aws_key, aws_secret : boto3 uses this key and secret if ~/aws/config file is not found (Not yet implemented)
  3. Now after settting all fields in the ec2notify.cfg, just run ec2notify.py file : python ec2notify.py
  4. To run this remider script end of every day or every week, use crontab.
    • crontab -e
    • At the end of the file, enter 30 18 * * * python /path/to/project/ec2notify.py
    • If you are running it under virtual environment, you need to activate it first and give absolute path to python and script 30 18 * * * cd /path/to/project && /path/to/project/env/bin/python /path/to/project/ec2notify.py
    • Enter either one of them based on your need and close it. Now ec2notify will run at 6:30 pm everyday.

The final reminder email

alt text

About

A simple daemon that monitors all the running AWS ec2 instances using boto3, filters ec2 instances by tags (team/group who created it) and sends an email as a reminder to the respective team members end of every day to shutdown idle instances.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages