Honestly, I wish to have smaller instances like m4.medium or even m4.small, because right now I have no other option to use for autoscaling group as m4.large even if it's not more than 80%-90% underutilized.
Not OP, but I have some data and an answer of sorts. If you have a workload that is light on CPU but needier on RAM, m4.large is cheaper than m3.large; m3.medium may not do as it has less than 4GB.
Also, in our experience t2.* instances can't sustain any reasonable network traffic, but they do work wonderfully for lightweight RESTful systems. So any workload which serves mostly cached data and needs 6-7 GB per node is best off with m4.large. At least for Ireland, in our experience a single m4.large can keep up with bursts of ~120Mbps and sustain around 65Mbps. We have two as edge nodes for one of our public services, and will probably add a third one soon. Cutoff point for sustained bandwidth is slightly above 70Mbps, after that it starts to stutter. The t2.* instances choke and throttle bandwidth way earlier.
Finding the right instance type for a particular service always takes some time and experimentation.