Amazon's S3 cloud storage platform is extremely cost-effective, but budgeting for it can be difficult to predict.
When we started our first online course back in 2010, almost all of the content consisted of video. And when we launched we knew we needed to address three specific issues right off the bat…
- Since we were bootstrapping the business ourselves, we needed something affordable.
- Since we were presenting the lessons in video format, we needed a powerful and robust cloud storage provider.
- Finally, since we were going to have students from all over the globe, we needed an efficient content delivery network (CDN) so that our students didn’t experience playback issues.
Not only did we need affordability and efficient video playback speeds, but we also wanted to protect our videos from being shared all over the internet. After all, we’d put in over 200 hours creating the video lessons for the course, so we weren’t about to share that content without being paid for what we’d created.
This obviously ruled out a platform such as YouTube where anyone with the link to a video can share it with someone else.
After quite a bit of analysis of our various options, we finally settled on using Amazon Web Services’ S3 cloud storage platform to host our videos and their CloudFront CDN to ensure that the videos were delivered from a global data center closest to our end user.
This was when my course co-creator and now business partner in Fly Plugins, Ben, developed an intelligent idea to create a media player plugin which would not only embed our videos within our WordPress website pages and posts, but to also access our Amazon S3-hosted videos on each end-user playback with a unique expiring and encrypted link to prevent file sharing.
So, as with our entire product lineup, we created a new plugin to solve the challenges we faced with our own course creation process and later made it available to other WordPress users…
However, we did face a couple of challenges along the way!
- First, the Amazon Web Services’ user console (which is where you upload and manage video files) is really designed for developers to use and that makes it pretty intimidating for the average WordPress website owner. Fortunately, our very talented lead developer, Cory, was able to overcome this hurdle by adding functionality to S3 Media Maestro which allows users to manage all of their Amazon S3 storage directly from the WordPress admin interface.
- Second, when setting up an Amazon Web Services’ account to use the S3 platform for storage, you basically enter a credit card for payment and then just have to sit back and wait to see what you’re going to be charged for hosting and delivering content from their service. This is obviously not ideal for membership site or online course creators who are on a tight budget.
Fortunately, a few years ago the team at Amazon Web Services’ recognized this “leap of faith” approach to monthly billing wasn’t going to fly and they implemented a detailed pricing calculator for all of the services they offer (there are many).
And since this is one of the primary questions we receive in our pre-sales inquiries regarding S3 Media Maestro, we wanted to provide a summary of how to utilize the Amazon Web Services’ pricing calculator so that S3 Media Maestro users can better forecast their cloud storage and delivery costs in advance.
That being said, S3 is extremely cost-effective to use for hosting membership site or online course videos. For example, we have years of video content (several hundred gigabytes) stored within our S3 account and our average monthly bill is around $42. Considering that Wistia Pro charges $99 per month plus $0.25 per video and Vimeo’s Premium plan is $75 per month, that’s a pretty cheap date.
Once we’ve accessed the calculator, we’ll see tabs for all of Amazon Web Services’ different offerings on the left (and there are many!). Here we’ll select “Amazon S3”.
Next, along the top we have two tabs labeled “Services” and “Estimate of your Monthly Bill”.
You’ll also see a drop down selector to choose a region (meaning which of the data centers your content is sent from). When I access the screen, it defaults to the “US East (N. Virginia)” data center which is the primary data center for AWS so for just obtaining a rough estimate of costs I will leave that alone.
Total File Storage Amount
This is pretty straightforward, but Amazon Web Services’ charges a fee based on the overall file size of the videos you have stored even if they aren’t accessed by anyone. This is typically going to average around $0.03 per gigabyte.
To calculate and enter your total storage, you would simply total up the file sizes of all of your videos and enter that into the “Storage” field. As an example, I’ll enter a value of 100 gigabytes. After doing so, we can see that in the “Estimate of your Monthly Bill” tab our charges will be $2.18 per month for storage.
When someone accesses one of your files stored within S3 (such as watching one of your videos), you are also charged a monthly fee based on how much data is sent out to an end user from Amazon’s servers. On average, this is going to be around $0.09 per gigabyte.
However, data transfer is a little tricker to calculate than a simple total of how big all of your files are. If you’re storing and delivering video for a membership site or online course, it’s likely that you’re going to be recording those videos with an HD quality of 720p or 1080p. We’ve rarely seen online courses with video recorded at 2K or 4K quality.
Your data transfer total will be based on the quality and length of your videos as well as how many people are accessing them from your membership site or online course. In general, videos recorded with a quality of 720p will require 0.9 gigabytes of data transfer per hour watched while videos recorded at 1080p will require 1.5 gigabytes per hour.
So let’s look at an example…
Let’s say I have an online course which consists of 10 hours of video content which I’ve recorded at a quality of 1080p. And I also assume that I am going to have, on average, 25 students per month taking my course in its entirety and all 25 students are going to watch all 10 hours of my course content at once.
Here’s the math…
- 1080p = 1.5 gigabytes of data transfer per hour
- 10 hours of video x 1.5 gigabytes = 15 gigabytes of data transfer per month per student
- 15 gigabytes of data transfer x 25 students per month = 375 gigabytes of data transfer per month
Now that I’ve already entered my total for the storage of all my videos and I have an estimate of how much data transfer I’ll need, I can scroll down to the bottom of the calculator and in the “Data Transfer” section I’ll enter 375 gigabytes in the “Data Transfer Out” field.
As you can see in the screenshots below, this results in $32.40 in data transfer costs (I’ve deleted the previous “Storage” total to illustrate data transfer costs relative to storage). If each of these 25 students has paid me $199 to enroll in my course, spending $32.40 to ensure they can watch the content which I’ve just been paid $4,975 for…well, it’s a no-brainer.
The final element that we’ll take a look at in the AWS S3 pricing calculator is the number of web requests we expect per month. This is how many instances of transfer to or from the server there are (ie. number of files accessed by your customers or number of files upload by you).
It’s almost not even worth calculating as the rates are minuscule, but it does slightly affect your monthly AWS bill and I wanted to cover it since we have had a number of course creation clients who use our WP Courseware learning management system plugin who have over 100,000 students enrolled at any given time.
The rate is, on average, around $0.01 per 5,000 requests, meaning for every 5,000 times a file is dealt with in S3 there is a $0.01 fee. Not a big deal for our 25 student course, but if you have 100,000 students all accessing 50 videos per month that does have a small (very small!) effect.
As I previously mentioned, one of the primary reasons we chose to use Amazon S3 for our own course videos was the ability to leverage their very powerful worldwide CDN called CloudFront. Essentially, versions of your content are cached on servers around the world so that they can be accessed easily by a global customer base without data transfer delays.
CloudFront is completely optional and if the majority of your customers or students will be in one specific geographic location, you likely don’t need to pay for it. However, S3 Media Maestro has been designed to integrate with CloudFront as the large majority of our users have a global audience.
With CloudFront, you essentially pay based on how much data is delivered from where. Here is a chart which illustrates CloudFront data transfer rates by region:
Going back to our data transfer example above where I have 25 students watching 375 gigabytes of video per month, let’s assume that I’m using CloudFront and the geographic breakdown of my customers/students is:
- United States: 25%
- Europe: 25%
- India: 25%
- South America: 25%
And the math…
- 25% United States x 375 gigabytes x $0.085 = $7.97 per month
- 25% Europe x 375 gigabytes x $0.085 = $7.97 per month
- 25% India x 375 gigabytes x $0.17 = $15.94 per month
- 25% South America x 375 gigabytes x $0.25 = $23.44
- Total CloudFront Monthly Bill = $55.32
As you can see, using a powerful global CDN adds up quickly. But it also costs a great deal in infrastructure, management, and maintenance to service data centers all around the world. And it also prevents your global student/customer base from waiting 8 seconds for a video to load and possibly asking for a refund of your membership or course.