AWS has something built in called [cloudwatch alarms][1]cloudwatch alarms that can handle the basics.
You could also use a Lambda Function. Give it access to the ASG, and then have cloudwatch configured so once the min amount of traffic starts coming in it sends an [Event][2]Event to the Lambda.
{
"ASG": "MyASGName"
"Action": "Start"
}
And once the traffic goes below the min.
{
"ASG": "MyASGName"
"Action": "Stop"
}
You could also build on this over time to control Vertical and Horizontal scaling.
EDIT: I actually prefer the Lambda. I always seem to run into these weird use cases where we can't shut down any of the instances, we have to do some math or investigation on which instances to shut down. In these situations a python lambda running boto3 is really helpful. [1]:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html [2]: https://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html