-
Notifications
You must be signed in to change notification settings - Fork 12
add user facing doc for power scheduler #425
Open
morga471
wants to merge
7
commits into
master
Choose a base branch
from
ps-doc
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+139
−0
Open
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
2bbbebf
add user facing doc for power scheduler
morga471 5afcaec
expand links
morga471 a78abde
additional details and resources section
morga471 d2e0557
add blurb about DST
morga471 2ab9d7f
add new schedule for ditd windows patching
morga471 8936cbf
update doc, add new schedule, break out custom schedules
morga471 1cbcc12
sort
morga471 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,139 @@ | ||
| # AWS Power Scheduler | ||
|
|
||
| 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) | ||
| 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 teams 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. | ||
|
|
||
| # 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. | ||
|
|
||
| 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 | | ||
| |----------------|-------|------|------|----------| | ||
| | `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 | | ||
| | `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 | | ||
| | `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 | ||
|
|
||
| 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. | ||
|
|
||
| * 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 CSVD-CLOUD for a Server Change Request and include: | ||
| * resource types | ||
| * required start/stop windows | ||
| * 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. | ||
|
|
||
| Requests are reviewed for operational impact, consistency, and cost controls before implementation. | ||
|
|
||
| # 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. | ||
|
|
||
| # 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 | ||
| 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 | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Schedules may be used by any resource. I don't believe we need rds or win-patch in there.
I really do not want hundreds of custom schedules. Why can't weekday-7a-7p work for the ditd-win-patch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where's their justification for this (and expected duration)? Why cannot the existing schedules work for them?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
they specifically requested to power on windows instances for their patch slot on the monday after the second tuesday at 11:30pm, as their patch slot is Tuesday 12a - 6a.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to document these justifications with an eye towards standardized schedules. This is a what, not a why.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don: How about having customers who want a custom schedule to be required to submit a ticket through Service Now with a Business Justification and approval routing process before it gets implemented? That way there's an option for the customer to request one but that it doesn't guarantee automatic implementation of the request.