I'm surprised nobody mentioned the service-scope.
Heroku makes it easy to deploy and run code, without having to manage servers, but that's pretty much it. You can have addons to have other services like DBs, ... but imho they're not first class citizens.
Digital Ocean is in the same kind of range, making it easy it run and deploy.
But none of them compare to AWS, they compare to AWS Lightsail only (ie the push-button bundle to get EC2 instances with some storage, policies, dns, ... all setup for you). But it's not even the same thing, because then you're in charge of patching your instance, (ie you have some ops), which Heroku handle for you.
Then AWS offers dozens (hundreds in fact) of other services. If you don't need them, that's probably overkill, but if you need to build something which is more than some web servers, then the comparison is more like:
And by the "answer my needs" criteria, security and infrastructure control is a big one. VPC (with network access control lists and security groups) is a great security feature to keep your subnet private if you have to do microservices. So far, I haven't found a secure+reliable+efficient way to build microservices on Heroku (unless you use a secured queue for everything, no rest calls), because of Heroku's public DNS and because their "Heroku Enterprise" is pure crap (excuse the language, but we lost weeks and finally had to abandon it because they consider things like rolling updates "edge case their users usually don't do"). Their vpc equivalent (private spaces) is super expensive and not reliable: auto scaling was not supported, the same apps running in classic had a ton of random crashes once run in private spaces... all to say that based on my experience, Heroku (classic, not enterprise) is great as long as you don't need more, but as soon as you really need to control your infra, you should move away ;-)