Architecture overview
The AWS CloudFormation template deploys a workflow that ingests source videos, or source videos and metadata files. When you upload a source video only, encoding options are defined in the AWS CloudFormation template at launch, and are applied to every video the solution encodes. When you upload a source video and metadata file, encoding parameters for each source video are defined in the metadata file, allowing customers to apply encoding options on a video-by-video basis.
Architecture diagram
Deploying this solution builds the following environment in the AWS Cloud.
Video on Demand on AWS architecture

The high-level process flow for the solution components deployed with the AWS CloudFormation template is as follows:
-
An Amazon S3
bucket for source media files. Content is eventually stored in Amazon S3 Glacier according to the Amazon S3 lifecycle policy. -
AWS Step Functions
, which creates ingest, processing, and publishing step functions. -
AWS Lambda
functions that perform the work of each step, and process error messages. For a description of the 10 Lambda functions, refer to the README.md file on the GitHub repository. -
An Amazon DynamoDB
table to store data captured through the workflow. -
AWS Elemental MediaConvert
to transcode media files from their source format. -
Amazon CloudWatch
for logging and Amazon CloudWatch Events rules for AWS Elemental MediaConvert notifications. -
Amazon SNS
topics to send encoding, publishing, and error notifications. -
AWS Elemental MediaPackage
(optional) to create video streams formatted to play on several devices from a single video input, and protect content from unauthorized use through content encryption and digital rights management. -
An Amazon S3 bucket for storing destination media files.
-
An Amazon CloudFront
distribution to deliver your video content to end users. -
An Amazon SQS
queue to capture the workflow outputs.