Rendering Blender Projects with AWS Batch

The estimated completion time of this lab is 90 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 fault tolerant 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. AWS Batch workloads are usually a perfect fit for Spot Instances, EC2 spare capacity offered at steep discounts compared to On-Demand instances. Using AWS Fault Injection Simulator (AWS FIS), you will simulate an EC2 Spot Instance interruption. After going through all the sections, you will have a resilient pipeline created, orchestrated by AWS Step Functions:

  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.