Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › Amazon ECS

Cut Your AWS Bill with Scheduled Scale-to-Zero: Match the Mechanism to the Resource

By Freedom251 Team · · 7 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Scheduled scale-to-zero can cut compute charges during predictable idle windows, but only when you use the AWS mechanism that fits the resource you are shutting down. Changing an Auto Scaling group’s capacity, lowering an ECS service’s task count, stopping individual EC2 instances, and running the multi-resource AWS Instance Scheduler are four different operations. Each has its own restore path, its own failure modes, and its own cost outcome. Pick the mechanism that matches how the workload is modeled, then test the restore step before you depend on the schedule.

Choose the mechanism by resource type

Scheduled scaling and instance stop/start are not interchangeable. A scheduled scaling action changes how many units of capacity a group or service is allowed or asked to run. Stopping an instance changes the state of one machine you already have. The distinction matters because scaling a group to zero removes instances from that group, while stopping an instance leaves it in place for a later start.

As an Amazon Associate I earn from qualifying purchases.

Resource Native mechanism What the schedule changes Can it reach zero? Restore action needed
EC2 Auto Scaling group Scheduled actions in EC2 Auto Scaling Desired capacity, and optionally minimum and maximum capacity Yes, if the action’s minimum and maximum also permit zero A separate scheduled action that sets capacity back above zero
ECS service Scheduled scaling for ECS services Task count, within minimum and maximum task bounds Yes, when the scheduled bounds are set to zero tasks A second scheduled action that restores task bounds
Individual EC2 instances Lambda with an EventBridge rule Stops and starts named instances Not applicable; the instance is stopped, not scaled A scheduled start action for the same instances
Multiple tagged EC2, Auto Scaling group, or RDS resources AWS Instance Scheduler solution Start and stop schedules selected by tags Not applicable; resources are started or stopped Built into the schedule definition
Lambda Managed Instances EventBridge Scheduler actions Execution-environment bounds AWS describes a scheduled scale-down; check the documented minimum for your setup An explicit call that restores a non-zero configuration

What scale-to-zero removes, and what stays on the bill

Scheduled scale-to-zero reduces the runtime of compute: the instance-hours or task-hours that no longer run during the idle window. It does not switch off every cost tied to a workload. AWS’s documentation on these features describes capacity and state changes; it does not provide a complete per-resource bill calculation for your architecture. Before you put a number on savings, check which of the following remain in service:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • EBS volumes and snapshots attached to stopped or removed instances. Storage is billed separately from instance runtime, and which volumes persist depends on how they were created and configured.
  • Load balancers, NAT gateways, and other network components that keep running while the compute behind them is at zero.
  • Elastic IP addresses and public IPv4 addresses, which carry their own charges.
  • RDS instances and their storage, unless a stop action or Instance Scheduler handles them.
  • Data transfer, logs, metrics, and monitoring that continue during the idle window.

Confirm service-specific pricing for your Region on the AWS pricing pages before you calculate a saving. Treat the total as a range built from the items above, not as a single guaranteed figure.

AWS’s Instance Scheduler implementation guide, dated 2025, states “up to 70% cost savings” for instances that only need to run during regular business hours, compared with leaving them running continuously at full utilization. This is a conditional scenario estimate. It is not a result AWS guarantees for your account, and it does not account for the retained costs listed above.

Mechanism guides

EC2 Auto Scaling groups

Use this path when the workload already runs in an Auto Scaling group. A scheduled action can set desired capacity and, optionally, minimum and maximum capacity. At the scheduled time, EC2 Auto Scaling compares actual capacity with the configured values and scales in or out to match. Scaling in removes instances from the group. It does not stop them for later use.

A schedule can be one-time or recurring. Recurring schedules use cron expressions and support time-zone selection. The default basis is UTC, and IANA time zones are supported. Location-based zones adjust for daylight-saving changes; UTC does not. The CLI and SDK take start and end times in UTC, so convert those values before you submit them.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a true scheduled zero, the action’s minimum and maximum must also permit zero. The restore values belong in a separate scheduled action, because a single action cannot both reduce and later restore the group. A minimal pair looks like this:

aws autoscaling put-scheduled-update-group-action 
  --auto-scaling-group-name web-asg 
  --scheduled-action-name stop-nightly 
  --recurrence "0 19 * * MON-FRI" 
  --time-zone "Europe/Berlin" 
  --min-size 0 --max-size 0 --desired-capacity 0

aws autoscaling put-scheduled-update-group-action 
  --auto-scaling-group-name web-asg 
  --scheduled-action-name start-morning 
  --recurrence "0 7 * * MON-FRI" 
  --time-zone "Europe/Berlin" 
  --min-size 2 --max-size 6 --desired-capacity 2

AWS documents that a scheduled action generally runs within seconds, but it can be delayed by up to two minutes, and actions scheduled close together can take longer. If two actions in the same group share an identical cron expression, they can run in arbitrary order. Give each action a distinct time. AWS documents a limit of 125 scheduled actions per Auto Scaling group, which matters for fleets that schedule many small adjustments.

ECS services

ECS scheduled scaling changes the service’s task count within minimum and maximum task bounds you define. It supports one-time and recurring schedules. AWS states that scheduled scaling can work alongside scaling policies: the schedule sets planned capacity boundaries, and scaling policies respond to workload conditions inside those boundaries. Use this combination when you want a nightly floor and demand-based scaling during working hours.

ECS scheduled actions are registered through Application Auto Scaling, so the service must first be registered as a scalable target. A stop action for a service named web-service in a cluster named prod-cluster looks like this:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
aws application-autoscaling put-scheduled-action 
  --service-namespace ecs 
  --resource-id service/prod-cluster/web-service 
  --scalable-dimension ecs:service:DesiredCount 
  --scheduled-action-name stop-nightly 
  --schedule "cron(0 19 ? * MON-FRI *)" 
  --scalable-target-action MinCapacity=0,MaxCapacity=0

Create a matching restore action with non-zero bounds. Confirm the time basis of the cron expression in the Application Auto Scaling documentation before you set the hour, because the offset changes when the service stops.

Individual EC2 instances with Lambda and EventBridge

Use this path when you need to keep specific instances and their state, not just their count. AWS documentation describes Lambda with an EventBridge rule as a way to stop and start instances on a schedule. In the EC2 User Guide, AWS states: “You can use Lambda and an EventBridge rule to stop and start your instances on a schedule.”

This approach is different from Auto Scaling. Auto Scaling terminates instances it no longer needs; a stop action leaves them in place. If your instances sit inside an Auto Scaling group, do not treat “stop the instances” as equivalent to setting the group’s capacity to zero. The group may launch replacements or terminate instances in ways a stop action does not.

The build involves three parts: a Lambda function that calls the EC2 stop or start operation for a defined set of instance IDs, an EventBridge rule with a cron schedule that invokes the function, and an IAM role that lets the function act on those instances only.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

AWS Instance Scheduler

AWS Instance Scheduler is an AWS-provided solution that automates start and stop schedules for EC2 instances, EC2 Auto Scaling groups, and RDS instances. It selects resources using tags and is designed to operate across multiple Regions. Use it when many resources in several accounts or Regions need consistent schedules and central governance, or when RDS is part of the same plan. Native scheduled actions are simpler when you only manage one Auto Scaling group or one ECS service.

The solution listing reported version 3.2.10, released in September 2026. Check the listing for the current version before you deploy, because the release you install determines the parameters and features available to you.

Lambda Managed Instances

Lambda Managed Instances is a specialized case, not the same as ordinary Lambda functions or EC2 and ECS scheduling. AWS documents EventBridge Scheduler actions that adjust execution-environment bounds for Lambda Managed Instances, including a scheduled scale-down. Reactivation requires an explicit call that restores a non-zero configuration. A scale-down that is not followed by that call leaves the environment in its reduced state, so pair every scale-down with a documented restore step.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Test the restore before you rely on the schedule

A schedule that shuts down correctly but restores late is an outage. Run this sequence in a non-production environment, then in production during a low-risk window:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Write down the intended capacity after restoration: instance count, task count, or environment bounds, and the minimum needed to serve users.
  2. Set the stop action to a near-term time, then confirm in the console or CLI that capacity or instance state changed as expected.
  3. Set the restore action to a near-term time after that, then measure how long the workload takes to become ready. Include application warm-up, health checks, and cache population, not just the instance state.
  4. Check the schedule’s time zone and the UTC equivalent of each action, and confirm the actions fire on the expected local day across a daylight-saving boundary if your zone observes one.
  5. Confirm that no other action, scaling policy, or deployment pipeline can override the restored values after the restore action runs.
  6. Verify the retained-cost items from the cost section are still in the state you expect, so the savings you measure are the ones you planned.
  7. Only then enable recurring schedules, and review the first full cycle before you widen the scope.

Troubleshooting common failures

  • Capacity does not reach zero: the action’s minimum or maximum is still above zero, or a scaling policy is raising capacity again within the bounds. Check the action’s values and any active policies.
  • Capacity does not return on time: the restore action is missing, uses the wrong time zone, or was set in UTC while you expected local time. Compare the schedule’s UTC equivalent with the time you intended.
  • Actions fire in an unexpected order: two actions in the same group share an identical cron expression. Stagger the times.
  • Instances stop but the bill is still high: attached storage, load balancers, NAT gateways, or public addresses continue to run. Review the retained-cost list above.
  • The application is up but slow or failing: startup or warm-up takes longer than the window you allowed. Extend the restore lead time or keep a small warm pool or minimum capacity.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Amazon ECSAmazon EventBridgeAWSAWS Instance Schedulercloud cost optimizationEC2 Auto Scaling

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.