Need help with aws-media-insights-engine?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

155 Stars 50 Forks Apache License 2.0 273 Commits 78 Opened issues


A serverless framework to accelerate the development of applications that discover next-generation insights in your video, audio, text, and image resources by utilizing AWS Machine Learning and Media services.

Services available


Need anything else?

Contributors list

scheduled-workflow release-workflow

MIE logo

Media Insights Engine (MIE) is a development framework for building serverless applications that process video, images, audio, and text on AWS. This repository contains the MIE back-end framework. Users interact with MIE through REST APIs or by invoking MIE Lambda functions directly. You will not find a graphical user interface (GUI) in this repository, but a reference application for MIE that includes a GUI is in the Media Insights repository.

For a high level summary of MIE and its use cases, please read, How to Rapidly Prototype Multimedia Applications on AWS with the Media Insights Engine on the AWS Media blog.


You can deploy MIE in your AWS account with the following Cloud Formation templates:


US East (N. Virginia) Launch in us-east-1
US West (Oregon) Launch in us-west-2

The Cloud Formation options for these one-click deploys are described in the installation parameters section.

After the stack finished deploying then you should see the following nested stacks (with slightly different names than shown below):

Build from scratch:

Run the following commands to build and deploy MIE from scratch. Be sure to define values for

REGION=[specify a region]
MIE_STACK_NAME=[specify a stack name]
git clone
cd aws-media-insights-engine
cd deployment
DATETIME=$(date '+%s')
aws s3 mb s3://$DIST_OUTPUT_BUCKET-$REGION --region $REGION
TEMPLATE={copy "Template to deploy" link from output of build script}
aws cloudformation create-stack --stack-name $MIE_STACK_NAME --template-url $TEMPLATE --region $REGION --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND --disable-rollback


If you're building applications on MIE then you will need to understand the following resources in the Outputs tab of the Cloud Formation stack:

  • DataplaneApiEndpoint is the endpoint for accessing dataplane APIs to create, update, delete and retrieve media assets
  • DataplaneBucket is the S3 bucket used to store derived media (derived assets) and raw analysis metadata created by MIE workflows.
  • WorkflowApiEndpoint is the endpoint for accessing the Workflow APIs to create, update, delete and execute MIE workflows.
  • WorkflowCustomResourceArn is the custom resource that can be used to create MIE workflows in CloudFormation scripts


MIE itself does not have a significant cost footprint. The MIE control plane and data plane generally cost less than $1 per month. However, when people talk about the cost of MIE they're generally talking about the cost of running some specific application that was built on top of MIE. Because those costs can vary widely you will need to get pricing information from the documentation for those applications. As a point of reference, read the cost breakdown for the Content Analysis solution.


MIE can support videos up to 2 hours in duration.

Architecture Overview

Media Insights Engine is a serverless architecture on AWS. The following diagram shows which AWS services are used by MIE and how they interact when a workflow executes.

MIE consists of a control plane and data plane, as shown above. Users primarily interact with these services in two ways:

  1. By using the control plane to create, read, update, and delete (CRUD) custom operators and workflows, and to execute those workflows.
  2. By implementing a consumer of the Kinesis data stream in the data plane to extract, transform, and load (ETL) data from the master MIE data store to downstream databases that support the data access patterns required by end-user applications.

MIE includes an operator library with several commonly used media analysis functions. However, workflow definitions and data pipeline consumers are entirely use-case dependent and therefore must be user-defined. This procedure is explained in the Implementation Guide.

Architecture components:

  • Workflow API: Use this API to create, update, delete, execute, and monitor workflows.

  • Control plane: includes the API and state machines for workflows. Workflow state machines are generated from MIE operators. As operators within the state machine are executed, they interact with the MIE data plane to store and retrieve derived asset and metadata generated from the workflow.

  • Operators: these are generated state machines that perform media analysis or transformation operation.

  • Workflows: these are generated state machines that execute a number of operators in sequence.

  • Data plane: this stores the media assets and metadata generated by workflows.

  • Data plane API: this is used to create, update, delete and retrieve media assets and metadata.

  • Data plane pipeline: this stores metadata for an asset that can be retrieved using an object's AssetId and Metadata type. Writing data to the pipeline triggers a copy of the data to be stored in a Kinesis Stream, which is developers can hook up their front-end applications.

Installation Parameters

You can deploy MIE and the demo GUI in your AWS account with the one-click deploy buttons shown above.

Required parameters

Stack Name: Name of stack. System Configuration * MaxConcurrentWorkflows: Maximum number of workflows to run concurrently. When the maximum is reached, additional workflows are added to a wait queue. Defaults to

. * DeployAnalyticsPipeline: If set to true, deploys a Kinesis data stream that can be used by front-end applications to obtain the data generated by workflows. Defaults to
. * DeployOperatorLibrary: If set to true, deploys operators for MediaConvert, Rekognition, Transcribe, Translate, et al. Defaults to
. * DeployTestWorkflow: If set to true, deploys test workflow which contains operator, stage and workflow stubs for integration testing. Defaults to
. * EnableXrayTrace: If set to true, xray tracing is enabled for all supported services in the stack. Defaults to


Join our Gitter chat at This public chat forum was created to foster communication between MIE developers worldwide.

Gitter chat

MIE can be extended in the following ways:

  • Run existing workflows with custom configurations.
  • Create new operators for new types of media analysis or transformation
  • Create new workflows using the existing or new operators.
  • Stream data to new data storage services, such as Elasticsearch or Amazon Redshift.

For instructions on how to extend MIE, read the API reference and builder's guide in the Implementation Guide.


MIE uses AWS_IAM to authorize REST API requests. The following screenshot shows how to test authentication to the MIE API using Postman. Be sure to specify the AccessKey and SecretKey for your own AWS environment.

For more information, see the Implementation Guide.

Known Issues

Visit the Issue page in this repository for known issues and feature requests.


See the CONTRIBUTING file for how to contribute.


The MIE logo features a clapperboard representing multimedia, centered inside a crosshair representing under scrutiny.


See the LICENSE file for our project's licensing.

Copyright 2020, Inc. or its affiliates. All Rights Reserved.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.