From 2bbbebff52a69a548e07e3670a1a8fb588d7ac0b Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Mon, 15 Jun 2026 17:19:04 -0400 Subject: [PATCH 1/7] add user facing doc for power scheduler --- aws/documentation/power-scheduler/README.md | 111 ++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 aws/documentation/power-scheduler/README.md diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md new file mode 100644 index 00000000..2dcdcd6b --- /dev/null +++ b/aws/documentation/power-scheduler/README.md @@ -0,0 +1,111 @@ +# AWS Power Scheduler + +Contents + +1. [About](#about) +1. [How It Works](#how-it-works) +1. [Who Should Use This](#who-should-use-this) +1. [How To Use It](#how-to-use-it) +1. [Approved Schedules](#approved-schedules) +1. [Tagging Examples](#tagging-examples) +1. [Requesting Exceptions or New Schedules](#requesting-exceptions-or-new-schedules) +1. [Notes and Limitations](#notes-and-limitations) +1. [Links](#links) + +# About + +Power Scheduler is our enterprise deployment of the AWS Instance Scheduler solution. +It provides tag-driven start and stop scheduling for AWS resources so teams can: + +* reduce non-production runtime cost +* keep predictable operating windows for development and support activity +* standardize schedule names across accounts and teams + +This documentation is for application and platform consumers who need to apply and maintain schedules on their AWS resources. + +# How It Works + +Power Scheduler evaluates resources that have the schedule tag key and applies the matching schedule window. + +* Tag key: `PowerSchedule` +* Schedule values: one of the approved values in [Approved Schedules](#approved-schedules) +* Timezone: `US/Eastern` + +At schedule start, resources are started. At schedule end, resources are stopped unless an override schedule is used. + +# Who Should Use This + +This is intended for teams managing resources that are not required to run continuously. + +Typical use includes: + +* development and test EC2 instances +* non-production RDS instances +* Auto Scaling Group workloads that should follow business-hour windows + +If a workload has 24x7 availability or strict uptime requirements, use `always-on` or request an approved exception. + +# How To Use It + +1. Determine the expected runtime window for your workload. +1. Select the closest approved schedule from [Approved Schedules](#approved-schedules). +1. Add or update the `PowerSchedule` tag on the resource. +1. Validate behavior at the next start/stop boundary. + +Use standardized values exactly as written. Values are case-sensitive. + +# Approved Schedules + +All times below are `US/Eastern`. + +| Schedule Value | Start | Stop | Days | Behavior | +|----------------|-------|------|------|----------| +| `weekday-9a-5p` | 09:00 | 16:59 | mon-fri | 9am to 5pm on weekdays | +| `weekday-7a-7p` | 07:00 | 18:59 | mon-fri | 7am to 7pm on weekdays | +| `weekday-6a-7p` | 06:00 | 18:59 | mon-fri | 6am to 7pm on weekdays | +| `weekday-8a-1p` | 08:00 | 12:59 | mon-fri | 8am to 1pm on weekdays | +| `ditd-rds-530a-930p` | 05:30 | 21:30 (Mon-Thu), 23:59 (Fri) | mon-fri | DITD preferred RDS window | +| `everyday-6a-9p` | 06:00 | 21:00 | mon-sun | 15-hour daily window | +| `weekday-6a-9p` | 06:00 | 21:00 | mon-fri | 15-hour weekday window | +| `everyday-9a-5p` | 09:00 | 17:00 | mon-sun | 9am to 5pm every day | +| `weekday-6a-12a` | 06:00 | 23:59 | mon-fri | 18-hour weekday window | +| `always-on` | n/a | n/a | n/a | Override: keep running | +| `always-off` | n/a | n/a | n/a | Override: keep stopped | + +# Tagging Examples + +Example: weekday business hours for a development EC2 instance. + +* Tag key: `PowerSchedule` +* Tag value: `weekday-9a-5p` + +Example: keep a production dependency running continuously. + +* Tag key: `PowerSchedule` +* Tag value: `always-on` + +# Requesting Exceptions or New Schedules + +If no approved schedule matches your requirement: + +1. Open a request with Cloud Infrastructure and include: + * account and region + * resource identifiers + * required start/stop windows + * business justification and expected duration +1. Use `always-on` only when there is a validated operational requirement. +1. Do not create ad hoc schedule values; unapproved values are not supported. + +Requests are reviewed for operational impact, consistency, and cost controls before implementation. + +# Notes and Limitations + +* Schedule windows are interpreted in `US/Eastern`. +* Start and stop actions are event-driven and not guaranteed at an exact second boundary. +* Some workloads may have startup dependencies; plan warm-up time in your selected schedule. + +# Links + +1. AWS Solution Overview: https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/solution-overview.html +1. AWS Sample Schedules: https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/sample-schedules.html +1. AWS Solution Source: https://github.com/aws-solutions/instance-scheduler-on-aws/tree/main From 5afcaec8959e3d66d3f3d58e3eb7899d474871e7 Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Mon, 15 Jun 2026 17:20:49 -0400 Subject: [PATCH 2/7] expand links --- aws/documentation/power-scheduler/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md index 2dcdcd6b..b4bc39f0 100644 --- a/aws/documentation/power-scheduler/README.md +++ b/aws/documentation/power-scheduler/README.md @@ -109,3 +109,5 @@ Requests are reviewed for operational impact, consistency, and cost controls bef 1. AWS Solution Overview: https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/solution-overview.html 1. AWS Sample Schedules: https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/sample-schedules.html 1. AWS Solution Source: https://github.com/aws-solutions/instance-scheduler-on-aws/tree/main +1. Hub Template - https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template +1. Spoke Template - https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws-remote.template From a78abde2577fe910f207feff799b8540469362ed Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Tue, 16 Jun 2026 15:40:08 -0400 Subject: [PATCH 3/7] additional details and resources section --- aws/documentation/power-scheduler/README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md index b4bc39f0..7445c566 100644 --- a/aws/documentation/power-scheduler/README.md +++ b/aws/documentation/power-scheduler/README.md @@ -4,6 +4,7 @@ Contents 1. [About](#about) 1. [How It Works](#how-it-works) +1. [Supported Resource Types](#supported-resource-types) 1. [Who Should Use This](#who-should-use-this) 1. [How To Use It](#how-to-use-it) 1. [Approved Schedules](#approved-schedules) @@ -21,7 +22,7 @@ It provides tag-driven start and stop scheduling for AWS resources so teams can: * keep predictable operating windows for development and support activity * standardize schedule names across accounts and teams -This documentation is for application and platform consumers who need to apply and maintain schedules on their AWS resources. +This documentation is for application teams who need to apply and maintain schedules on their AWS resources. # How It Works @@ -33,6 +34,22 @@ Power Scheduler evaluates resources that have the schedule tag key and applies t At schedule start, resources are started. At schedule end, resources are stopped unless an override schedule is used. +# Supported Resource Types + +Power Scheduler supports the following AWS resource types in scope for this implementation: + +* EC2 instances +* RDS databases +* Auto Scaling Groups (ASG) + +How scheduling applies by resource type: + +* EC2: the scheduler starts and stops tagged EC2 instances based on the selected `PowerSchedule` value. +* RDS: the scheduler starts and stops tagged non-production RDS databases that support stop/start operations. +* ASG: the scheduler applies the selected schedule to tagged Auto Scaling Groups so capacity follows the defined operating window. + +Use one approved schedule value per resource and ensure the `PowerSchedule` tag is set exactly as documented. + # Who Should Use This This is intended for teams managing resources that are not required to run continuously. From d2e055705502a85bf06d34604fd0279937bd3eaf Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Tue, 16 Jun 2026 15:41:08 -0400 Subject: [PATCH 4/7] add blurb about DST --- aws/documentation/power-scheduler/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md index 7445c566..7023a7a0 100644 --- a/aws/documentation/power-scheduler/README.md +++ b/aws/documentation/power-scheduler/README.md @@ -118,6 +118,7 @@ Requests are reviewed for operational impact, consistency, and cost controls bef # Notes and Limitations * Schedule windows are interpreted in `US/Eastern`. +* Daylight Saving Time is handled automatically by the configured `US/Eastern` time zone setting. Schedules stay aligned to local wall-clock time, but UTC execution time shifts by one hour when DST starts or ends. * Start and stop actions are event-driven and not guaranteed at an exact second boundary. * Some workloads may have startup dependencies; plan warm-up time in your selected schedule. From 2ab9d7ff8243831fdfc7d38f61ec6136e5a54d55 Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Fri, 10 Jul 2026 14:11:08 -0400 Subject: [PATCH 5/7] add new schedule for ditd windows patching --- aws/documentation/power-scheduler/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md index 7023a7a0..40a3cac1 100644 --- a/aws/documentation/power-scheduler/README.md +++ b/aws/documentation/power-scheduler/README.md @@ -89,6 +89,15 @@ All times below are `US/Eastern`. | `always-on` | n/a | n/a | n/a | Override: keep running | | `always-off` | n/a | n/a | n/a | Override: keep stopped | +## Custom Schedules + +All times below are `US/Eastern`. + +| Schedule Value | Start | Stop | Days | Behavior | +|----------------|-------|------|------|----------| +| `ditd-rds-530a-930p` | 05:30 | 21:30 (Mon-Thu), 23:59 (Fri) | mon-fri | DITD preferred RDS window | +| `ditd-win-patch-7a-7p` | 07:00 (23:30 mon after second tues) | 18:59 | mon-fri | weekday 7a-7p + Start at 23:30 on first monday after seecond tuesday for patching | + # Tagging Examples Example: weekday business hours for a development EC2 instance. From 8936cbf4cc6fe2553c5620edc250cdb656939206 Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Fri, 10 Jul 2026 14:14:02 -0400 Subject: [PATCH 6/7] update doc, add new schedule, break out custom schedules --- aws/documentation/power-scheduler/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md index 40a3cac1..53d27acc 100644 --- a/aws/documentation/power-scheduler/README.md +++ b/aws/documentation/power-scheduler/README.md @@ -114,11 +114,11 @@ Example: keep a production dependency running continuously. If no approved schedule matches your requirement: -1. Open a request with Cloud Infrastructure and include: - * account and region - * resource identifiers +1. Open a request with CSVD-CLOUD for a Server Change Request and include: + * resource types * required start/stop windows - * business justification and expected duration + * business justification + 1. Use `always-on` only when there is a validated operational requirement. 1. Do not create ad hoc schedule values; unapproved values are not supported. From 1cbcc124fbe377a5bddc5f7d1e80853350162e03 Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Fri, 10 Jul 2026 14:14:48 -0400 Subject: [PATCH 7/7] sort --- aws/documentation/power-scheduler/README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/aws/documentation/power-scheduler/README.md b/aws/documentation/power-scheduler/README.md index 53d27acc..be94e56f 100644 --- a/aws/documentation/power-scheduler/README.md +++ b/aws/documentation/power-scheduler/README.md @@ -77,17 +77,16 @@ All times below are `US/Eastern`. | Schedule Value | Start | Stop | Days | Behavior | |----------------|-------|------|------|----------| -| `weekday-9a-5p` | 09:00 | 16:59 | mon-fri | 9am to 5pm on weekdays | -| `weekday-7a-7p` | 07:00 | 18:59 | mon-fri | 7am to 7pm on weekdays | -| `weekday-6a-7p` | 06:00 | 18:59 | mon-fri | 6am to 7pm on weekdays | -| `weekday-8a-1p` | 08:00 | 12:59 | mon-fri | 8am to 1pm on weekdays | -| `ditd-rds-530a-930p` | 05:30 | 21:30 (Mon-Thu), 23:59 (Fri) | mon-fri | DITD preferred RDS window | +| `always-off` | n/a | n/a | n/a | Override: keep stopped | +| `always-on` | n/a | n/a | n/a | Override: keep running | | `everyday-6a-9p` | 06:00 | 21:00 | mon-sun | 15-hour daily window | -| `weekday-6a-9p` | 06:00 | 21:00 | mon-fri | 15-hour weekday window | | `everyday-9a-5p` | 09:00 | 17:00 | mon-sun | 9am to 5pm every day | | `weekday-6a-12a` | 06:00 | 23:59 | mon-fri | 18-hour weekday window | -| `always-on` | n/a | n/a | n/a | Override: keep running | -| `always-off` | n/a | n/a | n/a | Override: keep stopped | +| `weekday-6a-7p` | 06:00 | 18:59 | mon-fri | 6am to 7pm on weekdays | +| `weekday-6a-9p` | 06:00 | 21:00 | mon-fri | 15-hour weekday window | +| `weekday-7a-7p` | 07:00 | 18:59 | mon-fri | 7am to 7pm on weekdays | +| `weekday-8a-1p` | 08:00 | 12:59 | mon-fri | 8am to 1pm on weekdays | +| `weekday-9a-5p` | 09:00 | 16:59 | mon-fri | 9am to 5pm on weekdays | ## Custom Schedules