Automatically start and stop ec2 instance using bash Script

This tutorial explains how to automatically start and stop ec2 instance using Cronjob. This is one of the simplest method to schedule your EC2 Instance to stop and Start for cost saving.

 

Why Automatically start and stop ec2 instance ?

 

On demand EC2 Instance in AWS allow us pay as per use facility. So to avail this facility for cost saving purpose, a SysOps /DevOps Professional may be asked to schedule an instance to stop and start at a particular time.

Let say, a Test or UAT server is used between 10 AM to 6 PM , then the Project owner/ Business owner may ask you to make this instance available at this particular interval of time only.

 

 

How to  Automatically start and stop ec2 instance ?

 

In this tutorial, we will use a method where you will need an another instance from where you can run bash script using Crontab.

Note : This tutorial works only if your both EC2 Instances are within the same VPC, same Region and same AWS account.

 

Step 1- Connect to another EC2 Instance

It can be  any instance such as a Common Server /Script Server or your Production Server from there you need to run the script automatically.

Switch to root user

$ sudo su

 

Step 2 – Create two scripts  files – Start and Stop scripts

Create two Script files , start and stop script at any location. Let say I am creating them in /root  directory.

Use Vi or Nano editor to create or edit the files.

 $ nano /root/ec2instance_start.sh

Add the following lines in the start script and save and exit using Ctrl+O and Ctrl+ x command.

   #! /bin/bash
    aws ec2 start-instances -instance-ids i-f0c3678r3dba65876

 

 $ nano /root/ec2instance_stop.sh

Add the following lines in the stop script and save and exit using Ctrl+O and Ctrl+ x command.

  #! /bin/bash
  aws ec2 stop-instances -instance-ids i-f0c3678r3dba65876

 

Note : Here i-f0c3678r3dba65876 is the instance id of the Instance that you want to schedule for stop and start. You can see the instance id of an instance in description tab of that Instance in AWS Console.

 

Step 3 – Make the scripts executable

 

To make both the  scripts executable run following commands.

 $ chmod +x /root/ec2instance_start.sh

 $ chmod +x /root/ec2instance_stop.sh

 

To Read  more about CHMOD command read  –  CHOMD and CHOWN Commands

 

Step 4 – Schedule the Stop and Start using Cronjob.

 

Run following command to edit your Cron job.

$ crontab -e

Add the following line to start and stop the instance at 10 AM and 6 PM respectively.

00 10 * * * sh /root/ec2instance_start.sh > /tmp/ec2instance_start.log
00  18  * * * sh /root/ec2instance_stop.sh > /tmp/ec2instance_stop.log

 

To know more about Cronjob learn How to schedule Cronjob in Linux

Now your desired Instance is scheduled for Stop and Start at particular time.

 

Click to tweet this tip !

 

I hope you enjoyed this tutorial and learned about Automatically start and stop ec2 instance. If you think this is really helpful, please do share this article with others as well. Please also share your valuable feedback, comment, or any query in the comment box. I will really happy to resolve your all queries any.

Thank You

If you think we have helped you or just want to support us, please consider these:-

Connect to us: Facebook | Twitter

You may also like…

2 Responses

  1. Tinh Do says:

    In a productive enterprise corporation environment, a few pre-conditions steps need to be set in order for this tutorial to work. Mainly because of the multiple regions, multiple accounts etc.

    • cchakravarty says:

      Dear Tinh Do, I really thanks for your comment on this. Actually I myself realized this thing after writing this, I forgot to add such conditions on this. I am going the update it write away.
      Again thanks for your precious comment.

Leave a Reply

Your email address will not be published. Required fields are marked *