Rendering Blender Projects with AWS Batch

The estimated completion time of this lab is 60 minutes. Please note that rendering the animation presented below can incur in costs up to $15.

Overview

In this workshop you will learn to submit jobs with AWS Batch following Spot best practices to render a Blender file in a distributed way. You will be creating a docker container and publishing it in Amazon Elastic Container Registry (ECR). Then you will use that container in AWS Batch using a mix of EC2 On-Demand and Spot instances. Spot instances are EC2 spare capacity offered at steep discounts compared to On-Demand instances and are a cost-effective choice for applications that can be interrupted, what makes them well-suited for the batch processing that we will run. After going through all the sections, you will have the following pipeline created:

  1. A python script downloads the Blender file from S3 to extract the number of frames from the Blender project.
  2. The script submits a batch job using an array job with as many tasks as number of frames. It also submits a single stitching job using FFmpeg to create a final video file.
  3. Each of the jobs in the rendering job array run a Docker container that executes Blender to render a slice of frames, and after uploads them to S3.

The outcome of the workshop would be the following animation:

Pottery output

This output is the result of rendering the project Pottery by Prokster. We thank Prokster for providing the project under the Creative Commons 0 license. Head to the next page to take a look at the architecture that you will deploy.