Amazon S3 is undoubtedly the best way to host and deliver digital content. Whether you are serving audio, video, images, or live feeds, Amazon is the way to go. With Amazon’s pricing being dirt cheap, it’s hard to find another Content Delivery Network (CDN) out there that compares. With all the many benefits of S3, it does have one drawback — its a little complicated to set up.
Before I go on, let me clarify exactly what Amazon Web Services has to offer. S3 is like having your own hard drive in the cloud that only charges you for what you use. Its like one giant Dropbox — but drastically cheaper. CloudFront is basically access to Amazon’s global network. This is helpful for those of you with national or global audiences. Amazon has servers all over the world, so when someone from Australia attempts to access a video that you uploaded in to a server in New York, Amazon will cache a copy on its Australia CloudFront server instead of trying to make the long jump across the globe. This makes your content easily accessible to quickly delivered everywhere. I should also mention that you have total control over which servers you want CloudFront to cache, so if you only want to utilize the US servers you can. And because everything Amazon does is pay-as-you-go, its cheaper to use less servers.
Step By Step Guide to Setting up Amazon S3
- First go to http://aws.amazon.com/s3/ and sign up for an account. You can either add S3 to your existing Amazon account, or create a completely new Amazon account. Either way it will ask you for a credit card to keep on file.
- Once your account has been created, hover your mouse on My Account/ Console and choose the drop down item AWS Management Console.
- Under Storage & Content Delivery choose S3.
- Click on the blue button “Create Bucket“. Amazon uses the term “Bucket” to be fancy. Essentially a bucket is a folder (directory, host, etc.).
- Create a name for your bucket and select your region. You’ll want to choose a region closest to you for best delivery.
- Once you have a bucket setup you are ready to upload files. Unfortunately this isn’t as simple as drag and drop just yet. You’ll need an FTP client like Cyberduck, 3Hub, Transmit or any FTP client that supports S3. To keep Amazon super-crazy secure, they don’t just use the old fashioned username and password for credentials, you need to setup an “Access Key ID” and “Secret Access Key”. So navigate back to “My Account” then click on “Security Credentials.“
- Click on the little plus symbol next to “Access Keys“, then click the button “Create New Root Key“.
- Copy and Paste these in a secure location.
- Enter your Access Key credentials into your FTP program and start uploading 🙂
- Once your file completes its upload, you’ll want to do 2 things:
- Navigate back to your S3 console (steps 2& 3). Click on the bucket you created. you should notice the file you’ve just uploaded. Right click on your file and choose “Make Public“. Guess what this does….
- If you want your media to automatically begin downloading when people click on the link, highlight your file and choose “Properties“. Expand the “Metadata” section and choose “Add More Metadata“. Set to “Key: Content-Disposition Value: attachment“.
Now your ready to share your media! There are tons of plugins that make it easy to add these videos into your website. For WordPress, I like to use the “S3 Video Plugin.”
Frank Ramage says
Thanks for lifting the lid on S3, Tommy… This gives me an idea of how S3 works without having to “get ’round to-it.” My daytime job has a potential use for cloud-based storage of images; I just need a web-based front-end that handles login and downloading files on a per-user basis (similar to a studio photographer selling pics to customers).
Tommy Scully says
No problem Frank! Glad to help 🙂
When you say you need a web-based front-end, is it to only control content downloads? Or do your users need the ability to upload as well? Either way, S3 has crazy flexibility – I’m sure if something doesn’t exist like that already it could be easily developed.
Frank Ramage says
>> When you say you need a web-based front-end, is it to only control content downloads?
That’s it… no uploads by user. I’ll ask Dr. Google whether a plug-and-play solution exists already.
Thanks
Paul Clifford (@PaulAlanClif) says
One quick caveat. If you need to host podcast files, while you don’t get many downloads, it can be very cheap. However, if you get a ton of downloads, podcast media hosting like Libsyn or Blubrry provide is a better way to go because of their flat-rate model.
Otherwise, great article.