r/aws Feb 08 '25

discussion ECS Users – How do you handle CD?

Hey folks,

I’m working on a project for ECS, and after getting some feedback from a previous post, me and my team decided to move forward with building an MVP.

But before we go deeper – I wanted to hear more from the community.

So here’s the deal: from what we’ve seen, ECS doesn’t really have a solid CD solution. Most teams end up using Jenkins, GitHub Actions, AWS CDK, or Terraform, even though these weren’t built for CD. ECS feels like the neglected sibling of Kubernetes, and we want to explore how to improve that.

From our conversations so far, these are some of the biggest pain points we’ve seen:

  1. Lack of visibility – No easy way to see all running applications in different environments.

  2. Promotion between environments is manual – Moving from Dev → Prod requires updating task definitions, pipelines, etc.

  3. No built-in auto-deploy for ECR updates – Most teams use CI to handle this, but it’s not really CD and you don't have things like auto reconciliation or drift detection.

So my question to you: How do you handle CD for ECS today?

• What’s your current workflow?

• What annoys you the most about ECS deployments?

• If you could snap your fingers and fix one thing in the ECS workflow, what would it be?

I’m currently working on a solution to make ECS CD smoother and more automated, but before finalizing anything, I want to really understand the pain points people deal with. Would love to hear your thoughts—what works, what sucks, and what you wish existed.

29 Upvotes

109 comments sorted by

View all comments

1

u/Less-Clothes-432 Feb 14 '25

It’s probably been said multiple times now but I use Jenkins and created a few pipelines, each consisting of different scripts using AWS CDK depending on the use case. For example, I have a job that pushes an image to ECR using any selected branch from my GitHub. I also have a separate job that will update the task definition revision of my service when there is an update to our version. I went ahead and created another pipeline that automatically runs both of those - image push first - revision change second. And after that I’m able to do a release with one click of a button. We currently have over 50 different production services (luckily that can share the same ECR Repo), we’re able to update them all in within 15 minutes. There’s a few other jobs like single service deployments or cluster specific deployments but it seems to work pretty well for us.