Now I avoid AWS as much as I can. Of course my employers tend to be on AWS so sadly I can’t completely avoid it, but I do my best and would never recommend it anymore.
It is a tool like any other and it is not as simple as DO's but its also a lot cheaper and more powerful once you learn the tooling. The logging on deployment is true but I think the majority/all issues I have seen with that is when the image is not configured correctly and cannot run when testing locally.
I don’t remember what I was charged for, I assumed it was because it was counting the few seconds of running time at the minimum billed time each time I deployed, but I’m unsure. This was in 2020. All I know is that I had a reasonably simple setup, there was an issue where it wouldn’t successfully start up, but logging was flaky at best and I was charged for my attempts.
I’ve been using AWS for years, at various employers and my own last startups, and it’s far more complex than many of its competitors. That’s ok when you need all of its features, but if you need just one or two, then the complexity gets in the way.
Github Action (Build Docker Image) > Push Image to AWS ECR for image storage > Kick off Deploy of ECS.
You can configure your ECS cluster using the console UI or something like Terraform. Once configured its set it and forget it.
Honestly not that much more complicated compared to Heroku.
Just wondering how do you "Kick off deploy of ECS" services? The solution I have currently is using:
aws ecs update-service --cluster={ CLUSTER_NAME } --service={ SERVICE_NAME } --no-cli-pager --force-new-deployment
aws ecs wait services-stable --cluster={ CLUSTER_NAME } --service={ SERVICE_NAME }
From my CI, but this doesn't feel like the best way to do it
I don't think the way you are doing it is the worst way. I am biggest expert here of course. I do mine via a github action, right now it triggers on merges to main but could also be setup independently.
Condensed but I use 1) "build-push-action" - github action to send an image to ECR 2) "aws ecs update-service --cluster <name> --service <service> --force-new-deployment" for the deployment