Blog

Understanding AWS Storage Costs for Ultimate Management

It was the management guru Peter Drucker who first coined the phrase, “You can’t manage what you can’t measure.”

His insight has inspired many companies to do a better job of tracking their key performance indicators, and to base their strategic business decisions on reliable metrics.

Drucker’s adage most certainly holds true for those tasked with managing their organization’s cloud costs. Without a clear understanding of which services are being consumed, how much is being used in each category, and how much you are being charged for that usage, it is very difficult—if not impossible—to manage those costs.

The good news for AWS customers is that AWS invoices provide a wealth of detailed information about AWS cloud usage and costs. Knowing how to extract that information from the invoices can often provide visibility into how usage and cost can be optimized, without compromising performance or quality of service.

AWS Pricing 101

Before delving into how the key AWS usage reports and invoices are structured, it is important to understand how AWS services are categorized and priced. Here are the 5 main AWS billing categories:

Pricing Structures for Each Service

Each billable service has its own pricing structure. AWS EC2 On-Demand compute services, for example, are charged per virtual server instance-hour, calculated from the time an instance is launched until it is terminated or stopped.

In addition, there may be transfer costs for data transferred into or out of an AWS EC2 instance and those charges are calculated per volume in GBs. AWS Elastic Load Balancing is charged for each hour (or partial hour) that the load balancer is running and for each GB of data transferred through it.

Amazon S3 On-Demand storage services are charged per GB used, while AWS EBS provisioned storage services are charged per GBs/month. In addition, requests such as GET, PUT, POST, etc., are charged per a block number of requests, ranging from blocks of 1,000 up to 10,000. As in compute services, there may also be data transfer costs associated with storage services.

The AWS RDS On-Demand service is priced per hour per DB instance used. Its NoSQL DynamoDB, on the other hand, is priced on a monthly basis according to provisioned read and write capacity units, plus an hourly rate per GB of indexed data storage.

AWS CodeDeploy is free for code deployments to AWS EC2 instances, but there is a charge for each on-premises instance update. Any other AWS resources used during the code deployment, such as Amazon S3 buckets, will be charged accordingly.

The AWS AppStream application service is charged on an hourly basis for streaming resources actually used—plus a fixed monthly fee for each authorized user.

Rate Tiering Dependencies

Pricing rates are tiered according to:

Volume: The higher the volume, the lower the price per unit. For example, the Amazon S3 monthly price for Standard Storage in the US East (Ohio) Availability Zone is $0.023 per GB for the first 50 TB, $0.022/GB for the next 450 TB, and $0.021 per GB for usage over 500 TB.

Provisioning commitments: The higher the up-front commitment to a resource (vs. on-demand usage only), the lower the price. For example, the effective hourly rate of a Reserved Instance will be 21% less than the hourly On-Demand rate for the same instance class.

Storage media type: For EBS, the type of storage media provisioned has an impact on the price rate. For example, SSD storage volumes are more expensive than magnetic disks.

Payment terms: The rates for Reserved Instances will be lower if part of the payment is upfront, and lower still if the payment is entirely upfront. In addition, a 3-year term for a Reserved Instance will be significantly less expensive than a 1-year term.

Data access frequency: The pricing for stored data is tiered according to the frequency of access to the data. For example, the Amazon S3 monthly price for the first 50 TB of Standard Storage (frequently accessed data) is $0.023/GB, for Standard-Infrequent Access Storage it is $0.0125/GB, and for Glacier Storage (for archived data) it is $0.004/GB.

Another factor that impacts the AWS invoice is in which Availability Zone region(s) the service was provided—prices vary from region to region based on different latencies and data transfer speeds. Last but not least, if you have used AWS Organizations to apply centralized policies to multiple AWS accounts, the combined usage of all of the consolidated accounts is used to calculate volume discounts.

The Structure of an AWS Billing Item

This section outlines some particularly informative columns that will appear per billed item in the monthly AWS invoice.

Note that AWS can also provide a Cost and Usage Report that is structured in the same way as the invoice and gives a near-real-time listing of estimated charges since the previous invoice.

The Cost and Usage Report is made available several times a day as a CSV file in a user-specified Amazon S3 bucket.

Line Item Information

For each billable operation, the line item columns in the billing report provide important information on the type of usage, where it took place, when it took place, the resources consumed and the applicable rates, such as:

UsageAccountId: The ID of the account. Note that if you have consolidated accounts, the bill itself is issued under the UserAcountID of the Master account, but sub-line items will then identify the individual accounts under which the usage actually took place.

UsageStartDate: The date when the usage for this line item started.

UsageEndDate: The date when the usage for this line item ended.

Usage Type: The type of usage covered by this line item, such as On-Demand, Spot (an instance whose price is determined by bidding for unused server capacity), Reserved, an RDS node, etc. Note: If you paid for a Reserved Instance, this column has one line that shows the monthly committed cost, and multiple lines that show a charge of 0.

Availability Zone: The Availability Zone in which the AWS operation was carried out. As noted above, pricing for the same service will vary among Availability Zone regions.

Usage Amount: The actual usage of non-reserved (i.e., On-Demand) resources incurred by the operation. As described above, the unit of usage (hours, GBs, number of requests, etc.) is service-specific.

Blended Rate/Cost: In consolidated billing, the blended rate is the averaged rate and calculated cost of all of the Reserved Instances and On-Demand Instances used by the member accountsas calculated at the master account level. Those rates and charges are then allocated back to the member accounts in proportion to the member account’s usage.