I'd suggest to Schedule EC2 Startup using AWS Lambda.
Recommendation:
Check the suggestion from D. Svanlund, user with Ace: 2000+ pts, on this AWS Forum Thread.
Advantage:
You don't need anything more than a small script or two that you schedule. No instance to launch, just a quick invocation of the script you have built. Pick the programming language of your choice and use the AWS SDK to perform instance operations. A quite lightweight solution,
Estimated Cost:
The task running twice a day for typically less than 3 seconds with memory consumption up to 128MB typically costs less than $0.0004 USD/month (See Reference)
Scheduling
In January 2016 AWS Lambda scheduled events have been transformed into AWS CloudWatch Events. CloudWatch Events have the same scheduling capabilities as Lambda scheduled events used to have. The AWS Lambda scheduled events limitation of 5 scheduled events per region has been lifted to 50 CloudWatch Events rules.
Method
Setup EC2 types that is suitable for Start/Stop Scheduling. I recommend to use EC2-VPC/EBS.
Create IAM policy and role. Trust Relationship of the newly created role (See Reference).
Configure the CloudWatch Events trigger for Lambda via Function Trigger as shown below.
Here is the code of the function start-server which Runtime is set to Node.js.
Change YOUR_REGION and YOUR_INSTANCE_ID to yours from Instance Console.
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
var ec2 = new AWS.EC2({region: 'YOUR_REGION'});
ec2.startInstances({InstanceIds : ['YOUR_INSTANCE_ID'] },function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
context.done(err,data);
});
};
Note: Incase you need function stop-server just change ec2.startInstances to ec2.stopInstances. You may even no need the stop function when you use Automatic Shutdown Per EC2 Boot
Logging
If the IAM role is created with necessary permissions, then Lambda function will create AWS CloudWatch Log Stream for each of its run.