10 WAYS TO SHAVE COSTS IN AWS

  1. Rightsize EC2 instances and EBS volumes
    Over-provisioned EC2 Instances can lead to extensive and unnecessary costs. By simply downgrading your EC2 from a r3.2xlarge to r3.xlarge, you could save up to $250 a month per instance. To find rightsizing candidates monitor for instances that have an average CPU < 5% and max CPU < 20% for 30 days.

Rightsizing applies to EBS volumes as well; look for over-provisioned volumes and adjust to appropriate classes based on IOPS and capacity needs.

  1. Delete aged snapshots
    Snapshots can quickly spiral out of control with costly consequences. Candidates for deletion are snapshots with no associated EBS volume or aged snapshots where more recent versions exist. In most cases only the most recent snapshot is needed.

  2. Terminate zombie instances
    Zombie instances can be created by someone forgetting to remove a temporary resource, failed launch of instances or unsuccessful de-provisioning of scripts. Look for EC2 instances that have a max CPU < 5% over the past 30 days.

  3. Release dissociated elastic IP addresses
    Elastic IPs are only free when associated with a running instance. If an instance is stopped or terminated and the elastic IP becomes disassociated a monthly fee is incurred. It’s not easy to identify disassociated elastic IPs in the AWS console but there are tools that can help.

  4. Delete unattached EBS volumes
    When an EC2 instance is terminated the associated EBS volumes are not automatically removed and could become orphaned. Best practice is to snapshot then delete an orphaned volume when it has been unattached for longer than 2 weeks.

  5. Start and stop instances on a schedule
    Instances running 24x7 incur up to 744 costly hours per month. Often dev, test, QA, and batch processes are only needed at specific times. By automating shutdown of these instances during nights, weekends and holidays, runtime can be reduced by as much as 60%.

  6. Optimize S3 storage solutions
    Data is often stored in S3 standard that would be more optimally stored in less costly options. Savings of more than 75% can be attained by migrating data to lower tiers of storage when appropriate. Frequently accessed non-critical objects in S3 standard should be moved to S3 reduced redundancy storage. Infrequently accessed objects in S3 should be moved to S3 infrequent access class or archived to Glacier.

  7. Go server-less where you can
    Lambda is server-less code triggered by an event. Lambda supports Node.js, Java, Python, and C#. Lambda allows buying of compute in increments of milliseconds and avoids idle CPU or capacity. Some Lambda use cases include processing uploaded files, analyzing CloudWatch and CloudTrail logs, and automating operations (i.e., triggering a snapshot of an instance).