I personally expect a huge boom of cloud cost saving activities this year due to world-wide economical situation. Cloud is not cheap and companies have been starting to realise this. Some companies already announced their plan to leave cloud, some of them started with blaming cloud for high prices.


Default raw costs in cloud are high, no doubt. But there are thousands of ways to lower your bill. Let’s start with something that can be done NOW without rewriting your app. Let’s take a look to Saving Plans and Reserved Instances. Do you know which one to choose? which one gives you the best ratio risk / reward ?
Reserved Instance = commit to use given instance family in given region
Compute Saving Plan = commit to pay for CPU time no matter where and how
First of all, you need to understand that both options are “commitment”. After you commit, there is no official way to change it / cancel it. Therefore your run for higher discount can easily turn out into lose.
Should I use RI or Compute Saving Plan?
Reserved instances can give you the highest discount, but it is also the most risky option. If you cannot answer “YES, I’m 100% sure” on following questions, then I suggest to skip RI and go for Compute Saving Plans
Are you sure you will be in the same region for next 12 or 36 months?
Are you sure won’t switch to newer and cheaper instances to be announced during next 12 or 36 months? (for example migration to ARM can save a lot of money)
Are you sure you won’t migrate to some cloud-native technologies like AWS Lambda or AWS Fargate?
Rather use Saving Plan over Reserved Instances!
Commitment for 12 or 36 months?
Longer commitment = higher discount.
Are you ready to commit your company for next 36 months? if not, select 12 months….Do not look at the level of discount here. It will push you to increase the risk…
How much to prepay? Full, partial or no upfront?
The more money you will send to AWS in advance, the bigger discount you get.
But…is it really worthy to send AWS all your money upfront?
Let’s take a look to example:
m5.xlarge Linux EC2
region us-east-1
Ondemand price: $0.192 per hour
12M, No Upfront price: $0.141 per hour (discount 26%)
12M, Partial Upfront price: $0.134 per hour (discount 30%)
12M, All Upfront price: $0.132 per hour (discount 31%)
Use “No Upfront” or “Partial Upfront” payment option
The biggest discount you will get by choosing “No upfront” option. If you pay 50% upfront, you can get additional 5% which might be interesting for someone. But paying 100% upfront does not make sense here as you will get only additional 1% off.
What Saving Plan Coverage I should aim to?
My personal recommendation is to aim to 80% - 85% of workload coverage by your saving plans. If you have coverage ratio close to 100%, you can easily turn out your savings into losing by switching off couple of virtual machines during weekends.
My favourite option is
Compute Saving Plan, 36 months, No Upfront = discount almost 50%
How to retrieve EC2 price OnDemand
aws pricing get-products --service-code AmazonEC2 --filters "Type=TERM_MATCH,Field=TermType,Value=OnDemand" "Type=TERM_MATCH,Field=CapacityStatus,Value=Used" "Type=TERM_MATCH,Field=Tenancy,Value=Shared" "Type=TERM_MATCH,Field=instanceType,Value=m5.xlarge" "Type=TERM_MATCH,Field=location,Value=US East (N. Virginia)" "Type=TERM_MATCH,Field=operatingSystem,Value=Linux" "Type=TERM_MATCH,Field=preInstalledSw,Value=NA" --region us-east-1 | jq -rc '.PriceList[]' | jq -r '[ .product.attributes.instanceType, .product.attributes.usagetype, .terms.OnDemand[].priceDimensions[].unit, .terms.OnDemand[].priceDimensions[].pricePerUnit.USD, .terms.OnDemand[].priceDimensions[].description] '
How to retrieve EC2 price with Saving Plans
aws savingsplans describe-savings-plans-offering-rates --service-code AmazonEC2 --usage-types "UnusedBox:m5.xlarge" --savings-plan-types "Compute" --filters name=region,values=us-east-1 name=instanceType,values=m5.xlarge name=tenancy,values=shared name=productDescription,values='Linux/UNIX' | jq -r '.searchResults[]' | jq -r '[.savingsPlanOffering.paymentOption, .savingsPlanOffering.planDescription, .rate]'
Something else to read?
Story about very creative guy who saved money by not so ethical way....
AWS Cloud Finance Management community with regular online events