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:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →- 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.
#1 Best Overall
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.
Rank #2
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.
Rank #3
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:
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.”
Rank #4
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.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →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.
Best Value
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.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:
Quick Recap
- Write down the intended capacity after restoration: instance count, task count, or environment bounds, and the minimum needed to serve users.
- Set the stop action to a near-term time, then confirm in the console or CLI that capacity or instance state changed as expected.
- 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.
- 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.
- Confirm that no other action, scaling policy, or deployment pipeline can override the restored values after the restore action runs.
- 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.
- 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.

