ECS Capacity providers best practices


I am researching best practices when implementing Capacity Providers for ECS Clusters. One of the AWS reference videos recommends the usage of one Auto-Scaling Group / Capacity Provider per AZ. What is the main benefit of this recommendation other than distributing tasks at the capacity provider level ? Are there any other best practices to be aware of when implementing Capacity Providers ?

asked 2 years ago1337 views
1 Answer
Accepted Answer

When you define an AutoScaling group, given that you can choose the subnets in which the group will evolve, it will ipso facto define which AZs you will be running into.

If you create an ASG which uses Spot instances, given that the spot price of the instances varies based on the AZ, this will allow you to have a single service span across all defined AZs, given that 1 Capacity Provider = 1 ASG = 1 Zone.

If you have implemented the logic for an ASG with spot, doing the same logic but for ASG without spot is very straight forward. Then you simply change the base value for your service to favor one or the other (spot vs non spot).

Remember though that you cannot mix FARGATE capacity providers with ASG ones for same service. Mostly, out of features being available on EC2 which won't be on FARGATE (i.e. elevated access, kernel features, etc.) which are defined at the task definition level.

One could use a Launch Template and SpotFleet with overrides for each AZ and per instance types, but then the auto-scaling of the required instances in that fleet must be implemented by the user, whereas, the scaling of the nodes for a capacity provider is driven by ECS directly, so Capacity Providers with ASG using Spot is much more hands-off and managed service.

profile picture
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions