YourTube – A simple video platform in you personal amazon cloud

During the Dev4Cloud Levture i created a simple static webpage that uses Amazons S3 service for Hosting and video storage and amazons cognito for user authentification and role managemant.

Design considerations.

The platform was designed with simplicity in mind and there for i decided to go with as few services as possible. This is why this project uses no database. The features of the application as is are the following:

  • Video storage grouped in channels
  • Public viewing of videos
  • Authorized users can:
    • Create channels
    • Upload Videos
    • Delete Channels
    • Delete Videos

Implementation

The system was implemented using Amazons web services but is designed in such a simple way that porting it to other cloud providers with an JavaScript API should not be to difficult.

At first i created 2 separate Storage Buckets on amazons s3 object storage service. I configured one to act as a hosting service fore the application and the other one as storage.

The next part was to create an Admin user on Amazons Cognito service and give him a role with full access rights to the video storage bucket and save the user id and secret key. Furthermore i created an Identity pool with anonymous users enabled and gave those read permissions on the storage bucket.

Now i could upload the site itself to the Hosting Bucket.

The site itself makes heavy use of Amazons aws JavaScript API and is build as a single page application. The API is used to authenticate and request the objects from the Video Storage Bucket.

As a quick fix to ad SSL to the site i used amazons cloudfront CDN to cache the site.

Summary

The project itself was an interesting endeavor. I learned a lot about Amazons Cloud services. Going with a cloud based solution in this project had many upsides:

  • It was free  – Up to 5 GB storage is covered by amazons free licensing terms
  • It is scale able – The storage grows with the videos, no additional storage expansions needed

The only downside i have noticed was a bit higher cost of development hours.

Where to take this from here

For the future it is planed to ad meta data and thumbnails to both video and channel via images and text files which will be placed in the corresponding folders. Also a complete redesign of the UI is in order.

The code of the project can be found here.

Written by Nils Kristjansson