I Tried "Early Success Criteria," a New Feature for ECS Rolling Deployments

I Tried "Early Success Criteria," a New Feature for ECS Rolling Deployments

Amazon ECS rolling deployments now support Early Success Criteria. Instead of waiting for all tasks to start and become healthy, you can now treat a deployment as complete at a percentage you choose.
2026.09.08

This page has been translated by machine translation. View original

Introduction

On September 4, 2026, Early Success Criteria was added to Amazon ECS rolling deployments.

https://aws.amazon.com/about-aws/whats-new/2026/09/amazon-ecs-deployments-early-success/

To try the new feature, I set up a Fargate service for testing, changed the conditions used to determine early success, and checked how long deployments took.

Verification

Test environment

This is the configuration of the service used for measurement.

Item Value
Region ap-northeast-1
Cluster launch type AWS Fargate
Container image public.ecr.aws/nginx/nginx:latest
CPU / Memory 256 (.25 vCPU) / 512 MiB
desired count 5
ELB / Health check None

What is Early Success Criteria?

When Early Success Criteria is enabled, the deployment completes once the proportion of new tasks specified by healthyPercent become healthy. You specify the timing for cleaning up the tasks of the old revision with sourceServiceRevisionCleanup. With BLOCKING, the deployment completes after waiting for draining to finish, and with DEFERRED, the wait for draining can be detached from the deployment flow.

When setting healthyPercent to 20%, the deployment configuration is as follows.

{
    "maximumPercent": 200,
    "minimumHealthyPercent": 10,
    "strategy": "ROLLING",
    "earlySuccessCriteria": {
        "enable": true,
        "healthyPercent": 20,
        "sourceServiceRevisionCleanup": "BLOCKING"
    }
}

I applied this configuration with update-service.

aws ecs update-service \
    --cluster <クラスター名> \
    --service <サービス名> \
    --deployment-configuration '{
        "maximumPercent": 200,
        "minimumHealthyPercent": 10,
        "strategy": "ROLLING",
        "earlySuccessCriteria": {
            "enable": true,
            "healthyPercent": 20,
            "sourceServiceRevisionCleanup": "BLOCKING"
        }
    }' \
    --region ap-northeast-1

Measuring deployment time

I lowered healthyPercent step by step starting from 100%.

Pattern healthyPercent minimumHealthyPercent Duration Compared to baseline
Baseline 100% (default) 50% 170.0 sec (2 min 50 sec) —
Early 60% 60% 50% 123.6 sec (2 min 3 sec) -27%
Early 40% 40% 30% 124.7 sec (2 min 4 sec) -27%
Early 20% 20% 10% 88.9 sec (1 min 28 sec) -48%

Because the configuration has no load balancer, the deregistration drain wait is not included in the duration. Each pattern was measured once.

The shortest was Early 20%. The reason minimumHealthyPercent is lowered in the 40% and 20% patterns is to comply with the constraint described above.

The difference in duration between 60% and 40% was about 1 second. With BLOCKING, the wait for draining the old tasks is long, so the difference in healthyPercent did not show up.

I checked the events recorded in the Action Logs for the baseline, Early 60%, and Early 20%.

https://dev.classmethod.jp/articles/amazon-ecs-action-logs-deployment-visibility/

First, the baseline.

Elapsed time eventName statusReason
0 sec SERVICE_DEPLOYMENT_IN_PROGRESS Service deployment in progress.
+25 sec SERVICE_REVISION_STABLE Service revision marked stable.
+170 sec SERVICE_DEPLOYMENT_SUCCESSFUL Service deployment completed successfully.

Early 60% and Early 40% had almost identical durations. The statusReason changed to "met early success criteria."

Elapsed time eventName statusReason
0 sec SERVICE_DEPLOYMENT_IN_PROGRESS Service deployment in progress.
+30 sec SERVICE_REVISION_STABLE Service revision marked stable.
+124 sec SERVICE_DEPLOYMENT_SUCCESSFUL Service deployment met early success criteria.

With Early 20%, the time until the service revision became STABLE was somewhat longer at 37 seconds, and SUCCESSFUL was recorded at 89 seconds.

Elapsed time eventName statusReason
0 sec SERVICE_DEPLOYMENT_IN_PROGRESS Service deployment in progress.
+37 sec SERVICE_REVISION_STABLE Service revision marked stable.
+89 sec SERVICE_DEPLOYMENT_SUCCESSFUL Service deployment met early success criteria.

The event name at deployment completion remains SERVICE_DEPLOYMENT_SUCCESSFUL; what changes is the wording of statusReason. For normal completion it is "Service deployment completed successfully.", and for completion by meeting the early success criteria it is "Service deployment met early success criteria." From the Action Logs you can tell which path the deployment completed through.

Combining with DEFERRED

With the Early 20% setting, I changed sourceServiceRevisionCleanup from BLOCKING to DEFERRED and measured.

Pattern minimumHealthyPercent sourceServiceRevisionCleanup Duration
Baseline 50% — 170 sec
Early 20% BLOCKING 10% BLOCKING 88.9 sec
Early 20% DEFERRED 0% DEFERRED 80.3 sec

In configurations where waiting for ELB deregistration occurs, DEFERRED can detach that wait from the deployment completion determination, so a reduction in wait time can be expected. Because the test environment this time has no ELB, no deregistration wait occurred, and the difference from BLOCKING was only about 8 seconds. Although not verified this time, in configurations where DeregistrationDelay is set long on an ALB, a larger difference may appear.

Summary

With Early Success Criteria enabled, the time to deployment completion was cut by nearly half.

In environments that run multiple tasks and can tolerate a temporary decrease in the task count, Early Success Criteria is an option for shortening the wait for deployment completion. It is especially effective when you want to move faster through the downstream steps of a CI/CD pipeline that waits for deployment completion.

However, if you lower healthyPercent and minimumHealthyPercent too far, the number of running tasks may become insufficient and affect the service.
In production environments, I recommend configuring these settings carefully, balancing shorter deployment wait times against availability.

Share this article

AWSのお困り事はクラスメソッドへ