Skip to content

Instantly share code, notes, and snippets.

@eddmann
Created November 3, 2017 14:00
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save eddmann/a9e404eb62056f77610f752606a2e504 to your computer and use it in GitHub Desktop.
Save eddmann/a9e404eb62056f77610f752606a2e504 to your computer and use it in GitHub Desktop.
Scheduled Start/Stop of EC2 Instances using Lambda and CloudWatch Events
// Demonstration video can be found at: https://youtu.be/roAerKVfq-Y
// StopEC2Instance
const AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
const ec2 = new AWS.EC2({ region: event.instanceRegion });
ec2.stopInstances({ InstanceIds: [event.instanceId] }).promise()
.then(() => callback(null, `Successfully stopped ${event.instanceId}`))
.catch(err => callback(err));
};
// StartEC2Instance
const AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
const ec2 = new AWS.EC2({ region: event.instanceRegion });
ec2.startInstances({ InstanceIds: [event.instanceId] }).promise()
.then(() => callback(null, `Successfully started ${event.instanceId}`))
.catch(err => callback(err));
};
@marlonklc
Copy link

marlonklc commented Jun 2, 2021

@eddmann thanks a lot, helped me automate my clients' services.

@ChenLi0830 thanks to update script to node 12+

Congrats !

@marlonklc
Copy link

marlonklc commented Jun 2, 2021

help:

1)EC2 instances - i have mutiple servers and i would like to start/stop using above code...Can anyone help me how to use the code
2) can i merge rds & ec2 stop/start code in one funtion ?

yes, with lambda you have the power of code in your hands, so you can do all things that you want. You could add commands to start another EC2 instances for example. Just you need is aws sdk to execute like as CLI commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment