AWS Capacity Provider for ECS cluster not triggering scale-in event

Viewed 228

I have added a Capacity Provider to an ECS cluster. While scale-out events work as expected due to changes in CapacityProviderReservation metric, scale-in events do not work.

In my case, the TargetCapacity property is set to 90, but looking at CloudWatch the average for the CapacityProviderReservation metric currently sits at 50%. This has been the case for the last 16 hours.

According to AWS's own documentation, scale-in events occur -

When using dynamic scaling policies and the size of the group decreases as a result of changes in a metric's value

So it seems like the Capacity Provider is not changing the desired size of the ASG as expected.

Am I missing something here, or do capacity providers tied to ASG's simply not work both ways?

ASG and Capacity Provider resources in CloudFormation

Resources:
  AutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      AutoScalingGroupName: !Sub ${ResourceNamePrefix}-asg
      VPCZoneIdentifier:
        - !Ref PrivateSubnetAId
      LaunchTemplate:
        LaunchTemplateId: !Ref Ec2LaunchTemplate
        Version: !GetAtt Ec2LaunchTemplate.LatestVersionNumber
      MinSize: 0
      MaxSize: 3
      DesiredCapacity: 1

  EcsCapacityProvider:
    Type: AWS::ECS::CapacityProvider
    Properties:
      Name: !Sub ${ResourceNamePrefix}-ecs-capacity-provider
      AutoScalingGroupProvider:
        AutoScalingGroupArn: !Ref AutoScalingGroup
        ManagedScaling:
          Status: ENABLED
          TargetCapacity: 90
        ManagedTerminationProtection: DISABLED

Dynamic scaling policy for ASG

enter image description here

Current status of the CapacityProviderReservation metric

The CapacityProviderReservation metric has been at 50% for well over 12 hours.

enter image description here

Current status of the Capacity Provider

As you can see, the desired size is still 2, while it is expected that this should have dropped back to 1.

enter image description here

Update

After deleting and recreating the cluster, I notice that the Capacity Provider changes the DesiredCapacity to 2 instantly, even though there are no tasks running.

0 Answers
Related