Kevin, that's a good point. Right now what we do is keep instances alive until they're 55 minutes into the hour (to leave a few minutes to actually shut down). This works pretty well in a continuous usage scenario where a queue is getting work pretty much 24x7 and it's only a matter of adjusting the number of workers up and down with load throughout the day. But if you do one-shot batches where you fill the queue and then have it worked down to empty a lot more planning is needed to avoid having too many instances sitting idle for too long at the end. The key here is find the right trade-off between complexity (=fragility) and actual cost. Wasting an hour on 5-10% of the instances is probably not an issue, specially if the batch runs for several hours. Adding an hour on 100% of the instances may start to affect the bottom line.