
{"id":8056,"date":"2019-02-25T10:37:34","date_gmt":"2019-02-25T10:37:34","guid":{"rendered":"https:\/\/rax-stg-wp-aws.com\/blogs\/dramatically-cut-costs-with-aws-instance-scheduler\/"},"modified":"2026-11-03T19:29:15","modified_gmt":"2026-11-03T19:29:15","slug":"dramatically-cut-costs-with-aws-instance-scheduler","status":"publish","type":"blogs","link":"https:\/\/www.rackspace.com\/en-gb\/blogs\/dramatically-cut-costs-with-aws-instance-scheduler\/","title":{"rendered":"Dramatically Cut Costs with AWS Instance Scheduler"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p>On-demand infrastructure, with its speed, agility, efficient use of resources&nbsp;and lower costs drives many organizations toward cloud adoption.<\/p>\n<p>When used in conjunction with tools like CloudFormation or Terraform, users are&nbsp;able to provision and remove cloud infrastructure&nbsp; programmatically. This is&nbsp;typically referred to as Infrastructure as Code, or IaC, and is great for&nbsp;stateless resources.<\/p>\n<p>However, what if some servers cannot be regularly re-provisioned from scratch? Does it mean they need to be up and running 24\/7, even if only used during&nbsp;limited hours?<\/p>\n<p>Fortunately not.<\/p>\n<p>Cloud providers like AWS offer the ability to stop and start instances as needed&nbsp;while preserving the data on these instances. A stopped instance doesn\u2019t consume&nbsp;compute, network or power resources, so monthly costs are slashed drastically as&nbsp;compute charges cease (of course, storage\/disk will still be charged). This is&nbsp;useful for environments that are only needed for certain portions of the day.<\/p>\n<p>Turning off a non-production environment at the end of the day, for example,&nbsp;reduces weekly utilization from 168 to 50 hours, yielding a 70 percent reduction&nbsp;in running costs. Users can apply the same technique to proof-of-concept&nbsp;environments, typically used for occasional demos, or nightly batch\/job processing&nbsp;environments.<\/p>\n<p>Bottom line: not every resource or environment is needed all the time, so why&nbsp;pay for them 24\/7\/365?<\/p>\n<p><strong>The challenge<\/strong><\/p>\n<p>There is a catch: automation\u2026or more precisely, the lack thereof.<\/p>\n<p>With the exception of auto-scaling groups, AWS doesn\u2019t have the built-in&nbsp;functionality to stop and start instances <em>automatically<\/em>&nbsp;based on a defined&nbsp;schedule. You can stop your instances manually every evening, and start them back&nbsp;up every morning, but this quickly becomes a pain point.<\/p>\n<p>While some organizations build scheduling automation through services like&nbsp;Lambda, the maintenance can be problematic. There will be feature requests, bug&nbsp;reports, training demands and a reliance on a developer\u2019s tacit knowledge.<\/p>\n<p><strong>The solution<\/strong><\/p>\n<p>The AWS Instance Scheduler solution packages several AWS services together,&nbsp;including DynamoDB, Lambda and CloudWatch Events, into a deployable CloudFormation&nbsp;template, enabling users to automate custom start\/stop schedules for their EC2&nbsp;and RDS instances. Instance Scheduler does not feature a user interface, with&nbsp;schedule configuration performed by using the DynamoDB interface or the<br \/>\ncommand-line interface.<\/p>\n<p>Instance Scheduler supports:<br \/>\n* Stopping and starting stand-alone EC2 instances<br \/>\n* Stopping and starting RDS instances<br \/>\n* Stopping and starting instances in multiple regions<br \/>\n* Starting or stopping instances manually outside the defined schedule<br \/>\n* Partial automation (stop-only or start-only schedule)<\/p>\n<p>It does not support:<br \/>\n* Stopping or starting instances that are part of an auto-scaling group (native<br \/>\nASG scheduled actions can be used in this case)<br \/>\n* Stopping or starting other managed services (e.g. Redshift, Elasticsearch,<br \/>\nElastiCache, etc.)<\/p>\n<p><strong>&nbsp;How it works<\/strong><\/p>\n<p>A DynamoDB table contains definitions of Periods and Schedules, with every&nbsp;Schedule having a unique name. Resource tags are used to associate EC2 and RDS&nbsp;instances with a particular Schedule (e.g. Schedule=uk-office-hours, when&nbsp;\u201cuk-office-hours\u201d is a name of one of the Schedules we defined in DynamoDB).<\/p>\n<p>So what are Periods? Periods contain conditions that define the hours\/days\/months&nbsp;an instance will run. Schedules are composed of one or more Periods.<\/p>\n<p>For example:<\/p>\n<p>Assume that instances need to run during office hours (Monday-Friday 9am-5pm ET)&nbsp;and also perform batch processing every night 2am-4am ET. To achieve this, we&nbsp;define 2 periods:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26592-body-aws-instance-scheduler-periods.png\" alt=\"aws scheduler pic 1\" \/><\/p>\n<p>The Period \u201coffice-hours\u201d covers our office hours requirement and is responsible&nbsp;for starting the instances at 9am and stopping them at 5pm Monday-Friday. The&nbsp;Period \u201cbatch\u201d starts the instances at 2am and stops them at 4am every day of&nbsp;the week. Now let\u2019s define our Schedule:&nbsp;<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26592-body-aws-instance-scheduler-schedule.png\" alt=\"aws scheduler pic 2\" \/><\/p>\n<p>\nThe Schedule \u201coffice-and-batch\u201d contains the two running Periods we defined&nbsp;(\u201coffice-hours\u201d and \u201cbatch\u201d) and specifies the time zone. With the Schedule&nbsp;defined, we can associate our EC2 and RDS instances with it by adding a resource&nbsp;tag with a tag key of \u201cSchedule\u201d and a tag value of \u201coffice-and-batch.\u201d Note that&nbsp;the tag value is identical to the name of the Schedule we defined.&nbsp;<\/p>\n<p><strong>How much does Instance Scheduler cost?<\/strong><\/p>\n<p>The solution itself is free, however, because it utilizes a few AWS services&nbsp;under the hood (DynamoDB, Lambda, CloudWatch), and is deployed in your AWS account,&nbsp;you will still pay for these services. But, in our experience, unless you have&nbsp;a significantly large AWS environment, these costs are generally below $10 per&nbsp;month \u2014 and we\u2019ve yet to see a customer that doesn\u2019t save at least $10 in usage<br \/>\ncosts with Instance Scheduler. Essentially, it pays for itself.<\/p>\n<p>Instance Scheduler provides a reasonable set of features, at a minimal cost, and&nbsp;meets most AWS customer use cases. If you need to schedule resources other than&nbsp;EC2 or RDS, support multiple cloud platforms, or require a UI, however, Instance&nbsp;Scheduler might not be right for you.<\/p>\n<p>And of course, if you like the solution, but want someone to manage it for you,&nbsp;Rackspace can help. We provide full management of Instance Scheduler for any AWS&nbsp;customer with a managed service so you have a Fanatical Experience.<\/p>\n<p>As an added bonus, AWS Instance Scheduler improves security. A system that is&nbsp;only running for 30% of time has a lower security risk profile. Plus, it\u2019s good&nbsp;for the environment! You switch off the lights at home when not in use. Shouldn\u2019t&nbsp;you do the same with your infrastructure?<\/p>\n<p>If you\u2019re a current Rackspace customer and would like to start using Instance&nbsp;Scheduler, please submit a request via a Support ticket, or reach out to your&nbsp;account manager.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dramatically Cut Costs with AWS Instance Scheduler<\/p>\n","protected":false},"author":2,"featured_media":8058,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"content-type":"","nid":"26592","content_type":"blog","created_by":"10130","authored_on":"2024-02-09T10:37:34+00:00","field_article_industries":"","tag_category":"Technical","field_blog_author_text":"by Maxim Rozin, Principal Engineer, Rackspace Technology","seo_description":"Oracle REST Data Services (ORDS) and SQL Developer. Develop RESTful web services and enhance database capabilities.\r\n","field_featured_image":"","insights_image":"\/wp-content\/uploads\/2026\/blog_technical_images\/26592-insights_image-aws-technical-blog-1-insights.png","field_partners":"","rxt_platforms":"Amazon Web Services (AWS)","product":"","publisheddate":"2019-02-25T10:37:34","rxt_solutions":"Public Cloud","opengraph_tag":"","x_tag":"","teaser_flag":"Technical Blog","seo_titile":"Dramatically Cut Costs with AWS Instance Scheduler | Rackspace Technology","field_topics":"","field_slug":"dramatically-cut-costs-with-aws-instance-scheduler","footnotes":""},"categories":[178],"tags":[204],"class_list":["post-8056","blogs","type-blogs","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-technical"],"_links":{"self":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/8056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs"}],"about":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/types\/blogs"}],"author":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/comments?post=8056"}],"version-history":[{"count":3,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/8056\/revisions"}],"predecessor-version":[{"id":9852,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/8056\/revisions\/9852"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media\/8058"}],"wp:attachment":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media?parent=8056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/categories?post=8056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/tags?post=8056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}