If your organization runs workloads on Amazon Web Services (AWS), AWS is probably a significant part of your IT expenditure. Cutting costs is always a priority, so I put together a list of handy ways you can reduce waste and optimize your usage of AWS to significantly reduce costs.
1. AWS Trusted Advisor
AWS Trusted Advisor is a tool that works online to provide you with real-time recommendations. The tool analyzes your AWS environment and then offers best practices you can implement to better utilize your resources. The Advisor offers guidance in five categories, including cost optimization, performance, fault tolerance, service limits, and security. It is up to you whether to implement any of these recommendations and how to do so.
2. Analyzing Your Costs with Cost Explorer
Cost Explorer is an Amazon tool that lets you to view and analyze AWS pricing for the services you consume, and your usage. It provides a Cost and Usage report and a Reserved Instance report, which shows utilization and costs of compute instances over the past 12 months. It also lets you set up pre-configured views to quickly find information about cost trends in your Amazon deployment, and reveal opportunities for cost savings.
Cost Explorer can forecast your spending over the next 12 months, and can recommend where you can replace on-demand instances with discounted Reserved Instances, for resources that you run on Amazon for long periods of time.
3. Spot Instances
AWS Spot Instances offer discounts of up to 90% compared to on demand instances. If you are a user of EC2, this is the option that can save you the most money on Amazon by far. However, Spot Instances can be difficult to use for workloads that cannot tolerate interruptions. Amazon can terminate a Spot Instances when it needs to reclaim their capacity for on-demand or reserved instance buyers. The system warns you just 2 minutes in advance before an instance is shut down.
4. Savings Plans
AWS offers its customers several pricing models. On-demand pricing is a popular model that can help you quickly scale your resources. However, if you can commit to using the service for a long period of time, between a year and three years, you can leverage the saving plans pricing models.
Saving plans offer significant discounts (up to 72%) for customers committing to using AWS resources for a long period of time. This does not necessarily mean you have to pay all of the costs upfront. AWS offers three types of saving plans—all upfront, partial upfront, and no upfront.
Saving plans available for a wide range of services, including AWS Fargate, Amazon Elastic Compute Cloud (Amazon EC2), and AWS Lambda.
5. AWS Instance Scheduler
You can use the AWS Instance Scheduler to reduce the costs of Elastic Compute Cloud (Amazon EC2), and Amazon database services, including Relational Database Service (Amazon RDS) instances.
The AWS Instance Scheduler is a solution provided by AWS for the purpose of configuring customized start and stop schedules for EC2 and RDS instances. This level of control can help you significantly reduce operational costs and save up to 70%. You can use AWS Instance Scheduler in production and non-production environments.
6. Delete Unattached EBS Volumes
When launching an EC2 instance, an Elastic Block Storage (EBS) volume is typically attached and used as a local disk drive. AWS continues to bill you for the volume even if you don’t use it, unless you check the box in the AWS console to automatically delete the volume when the instance is terminated. Make sure you always check this box, or else actively terminate the EBS volume when you no longer need it, to avoid incurring ongoing costs for each disconnected EBS volume.
7. Delete Old Snapshots
The common way to backup EBS volumes is to create snapshots. While the cost of snapshots is lower than regular EBS storage, if you retain old snapshots unnecessarily, they will add up to a major expense over time. In most cases, you only need the latest snapshots for recovery purposes, so you should set a policy defining how many snapshots should be retained per instance, and automatically delete the rest.
8. Terminate Orphaned Resources
Orphaned resources are deployed in Amazon, and incur costs, but are not actively used. These could be Amazon EC2 compute instances, relational database service (RDS) databases, or other resources, such as Elastic Load Balancers (ELB). Any of these may be launched on purpose and then abandoned, or may be launched inadvertently when you deploy infrastructure on AWS. Identifying orphaned resources and stopping them is a great way to save costs.
9. Upgrade Instances to the Latest Generation
AWS regularly releases next-generation instances with improved performance and functionality. You can leverage these updated instances to save costs, by moving workloads to newer, smaller-sized instances, which provide similar computing capacity.
10. Move Infrequently-Accessed Data
Amazon’s core storage service, the Simple Storage Service (S3), has six tiers of storage at different prices. The following table summarizes the services and their pricing.
|Service||Used for||Pricing per GB for first 50 TB / month (US East region)|
|S3 Standard||Frequently accessed data, no special charges for retrieval||$0.023|
|S3 Intelligent Tiering||Standard storage with automated data lifecycle||$0.023|
|S3 Infrequent Access||Data infrequently accessed, but requiring fast access||$0.0125|
|S3 Infrequent Access (Single Zone)||Data infrequently accessed which is not critical if lost||$0.01|
|S3 Glacier||Data in long term archiving, requiring access within minutes to hour||$0.004|
|S3 Deep Archive Glacier||Data in long term archiving, with retrieval time of 12 hours||$0.00099|
As you can see in the table, you can receive very deep discounts on raw per-GB price by moving data to one of the cold storage tiers. However, take into account that archival tiers have higher charges for data access—see official pricing for details.
In this article I reviewed ten ways you can cut costs in the AWS cloud. The common denominator of these best practices is that they are not a one-time operation. They require monitoring your cloud systems on an ongoing basis, and performing ongoing maintenance to ensure cloud resources are used correctly.
The key to implementing any of these best practices is automation—find a way to automatically identify waste and remove or adjust AWS resources. This will allow you to save costs for the long term without a large maintenance effort.