Scheduling Amazon EC2 Instance
ec2:StopInstancesCan ZopNight schedule Amazon EC2 Instance?
Stopping an EC2 instance ends the compute charge immediately and keeps everything else: the instance ID, the private IP, and every attached EBS volume. Those volumes keep billing at the full rate, which is why a schedule saves the compute line and not the whole bill.
How the stop works
| Field | Value |
|---|---|
| Behaviour | instance stopped via ec2:StopInstances and restarted via ec2:StartInstances on schedule. |
Example schedules
- 0 8 * * 1-5 — Business Hours Start: Start at 8:00 AM on weekdays
- 0 18 * * 1-5 — Business Hours Stop: Stop at 6:00 PM on weekdays
- 0 22 * * * — Night Shutdown: Stop at 10:00 PM every day
- 0 6 * * 1-5 — Morning Startup: Start at 6:00 AM on weekdays
- 0 20 * * 5 — Weekend Shutdown: Stop at 8:00 PM on Friday
- 0 7 * * 1 — Weekend Startup: Start at 7:00 AM on Monday
What survives the stop
A stopped instance is not a terminated one. It keeps its instance ID, its private IP address, its attached volumes and its root device. Start it again and it comes back the same machine.
What it does not keep is the public IP, unless that address is an Elastic IP. An instance with an auto-assigned public IP gets a different address on every start, which breaks anything that allowlisted it or pointed DNS at it. That is the single most common surprise when a team first schedules instances.
Instance store data is destroyed
Instances with instance-store volumes lose that data on stop. It is ephemeral by design and there is no warning at stop time. If a workload writes anything it needs to local NVMe rather than EBS, a schedule will quietly delete it every evening.
What keeps billing overnight
Attached EBS volumes, at their full provisioned rate. A stopped instance with a 500 GB gp3 root volume still costs roughly $40 a month for that disk.
Any associated Elastic IP also keeps billing: since 2024 AWS charges for every allocated public IPv4 address regardless of instance state.
So the honest saving is the compute rate multiplied by the off-hours, not the instance’s total monthly cost.
The arithmetic worth doing
A weekday 08:00–18:00 schedule leaves an instance running 50 hours a week out of 168. That is 118 hours off, or roughly 70% of the compute line, on non-production instances that nobody touches at night or at weekends.
Reserved instances change the answer entirely
A Reserved Instance or Savings Plan bills whether or not the instance runs. Scheduling a covered instance saves nothing at all. You keep paying the commitment and simply stop using it.
Check commitment coverage before scheduling. The instances worth scheduling are the on-demand ones.